触笔支持包括桌面上的绘图板设备(如 Wacom 生产的各种绘图板)和移动设备上的手写笔(如 Samsung Note 系列的手写笔、iOS 上的 Apple Pencil 或 Microsoft Surface 系列的 Surface Pen)。
触笔通常提供压力感应、范围内检测(在笔尚未接触到绘图板或屏幕表面时控制光标的能力),并且通常能够翻转笔用于类似橡皮擦的操作。
触笔由 Pen
类实现的 Pen Device
布局表示,基于指针布局。
可以通过 Pen.current
查询上次使用或添加的触笔。
注意:
触笔/绘图板支持目前在 Windows、UWP、iOS 和 Android 上实现。macOS 支持从 Unity 2020.1+ 开始。
一些设备支持独立追踪多个触笔,但 Unity 的输入系统当前不支持此功能。
iOS: Apple Pencil 侧面的双击操作目前没有作为输入处理,且不支持范围内检测,inRange
将保持默认值。
除了从 Pointer
继承的控件外,触笔设备还实现了以下控件:
控件类型描述tipButtonControl触笔的笔尖是否接触表面。等同于继承的 Pointer.press
。eraserButtonControl触笔的橡皮擦/背端是否接触表面。firstBarrelButtonButtonControl触笔上第一个桶形按钮是否被按下。secondBarrelButtonButtonControl触笔上第二个桶形按钮是否被按下。thirdBarrelButtonButtonControl触笔上第三个桶形按钮是否被按下。fourthBarrelButtonButtonControl触笔上第四个桶形按钮是否被按下。inRangeButtonControl触笔是否在绘图板的检测范围内。如果不支持,该控件将始终保持值为 1。tiltVector2Control触笔相对于表面的倾斜角度。twistAxisControl触笔绕自身轴线的旋转角度。仅在有限数量的触笔(如 Wacom Art Pen)上支持。
压力: 通过 Pen.pressure
可以访问触笔的当前压力,0 表示没有压力,1 表示最大压力。如果系统应用了自定义压力曲线,压力值可能会超过 1。如果触笔不支持压力级别,则 pressure
控件始终返回 1。
倾斜: 如果支持,Pen.tilt
控件表示触笔相对于绘图板或屏幕表面的倾斜角度。X 和 Y 轴分别对应于屏幕的坐标轴。值为 1 表示触笔完全平行于表面,而值为 0 表示垂直于表面。如果触笔不支持倾斜角度,则 Pen.tilt
始终为 (0,0)。
旋转: 一些触笔支持检测旋转(触笔绕自身轴线旋转)。如果支持,Pen.twist
表示当前的旋转角度,0 表示触笔朝向 Y 轴,接近 1 的值表示触笔完全顺时针旋转。
触笔可能不需要接触绘图板或屏幕表面就能控制光标。可以使用 inRange
按钮控件来判断触笔是否在检测范围内。如果 inRange
报告为按下,表示触笔与设备注册。对于不支持此功能的设备,inRange
始终报告为按下。
触笔设备通常在侧面有一个或多个按钮。这些按钮通过 firstBarrelButton
、secondBarrelButton
、thirdBarrelButton
和 fourthBarrelButton
来表示(如适用)。