unity 调用搜狗输入法 unity手写输入法_System


今天遇到一个需求:获得手绘版压感信息,利用压感信息控制笔刷大小。需要同时支持win&mac。

  • uWintab是一个比较古老的方案,虽然可以获得满多信息,但似乎只能用在window系统上。好像是wacom提供的(测试过可用


hecomi/uWintabgithub.com

unity 调用搜狗输入法 unity手写输入法_System_02


unity 调用搜狗输入法 unity手写输入法_unity ui插件_03



可我想mac和win都能用,于是就找到了新的方案,而且是unity官方的输入系统api,不是外部插件。不过这东西还是有点新,google的资料也不多,所以记一下以防有人有类似需求。

使用流程如下:

1.将unity的旧的输入系统转换到新的input system[1]

  • 先去PackageManager把Input System下载下来


unity 调用搜狗输入法 unity手写输入法_System_04


  • 如果你的程序里用到了原来的输入系统的属性或者函数,就需要把他们改成新的方式,比如鼠标位置要这么改:


unity 调用搜狗输入法 unity手写输入法_unity 调用搜狗输入法_05


其他的见官方文档:

Migrating from the old input systemdocs.unity3d.com

unity 调用搜狗输入法 unity手写输入法_unity 调用搜狗输入法_06


2.转换完之后你可能会遇到一个错误:

InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings.

  • 这个错误是因为场景中具有StandaloneInputModule引起的,这是就输入系统的ui输入模块。解决方案是选中eventsystem,看inspecor那原本有个按钮“inputsystemUIinputModule”,点一下就会变成下图这样:


unity 调用搜狗输入法 unity手写输入法_3d_07


如果还是不行就去Player Setting里把Active Input Handling 改成“both”。

方法是从论坛里看到的:

https://forum.unity.com/threads/unity-render-pipeline-debug-clashes-with-new-input-system.735179/forum.unity.com


3.接着你就可以在代码中使用新的Input System了

你可能不知道怎么用,这个时候你得知道官方是很完备的,再新的东西,也会给出例子。把下面附带的包也顺便下载下来,按照提示安装示例程序。


unity 调用搜狗输入法 unity手写输入法_System_08


unity 调用搜狗输入法 unity手写输入法_System_09


你会得到这样一个场景。可以从下拉列表里看到它支持的输入设备:


unity 调用搜狗输入法 unity手写输入法_System_10



1. Pen (ISX Only)
2. Keyboard & Mouse
3. Xbox
4. DualShock
5. Gamepad Diagram
6. Joystick (TODO)
7. Pen (SX Only) Touch

具体使用方法就看他的原代码把~


我这里给手绘版的使用举个例子

在PenISX.cs的这段代码基本就可以得到大部分数据了。操作也很简单,先定义pen,然后直接pen.xxxx读取数据。

  • 注意别忘记头文件
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;


unity 调用搜狗输入法 unity手写输入法_System_11



ps: 手绘版是wacom的,其他的未测试过,但是估计方案2的input system也能用8

ps2:注意unity的版本,inputsystem有可能不支持,我的版本是2020.1(官方文档中说2020.1才支持macos使用pen的信息)[2]


unity 调用搜狗输入法 unity手写输入法_unity ui插件_12


参考

  1. ^一个问答: https://stackoverflow.com/questions/63818824/how-do-i-get-pen-pressure-values-in-unity-using-s-pen-on-android
  2. ^官方文档: https://docs.unity3d.com/Packages/com.unity.inputsystem@0.9/manual/Pen.html