U4S1L12——UGUI中使用
U4S1L12——UGUI中使用
InputSystem对UI的支持
- 新输入系统 InputSystem 不支持 IMGUI(GUI),注意: 编辑器代码不受影响
如果当前激活的是 InputSystem,那么 OnGUI 中的输入判断相关内容不会被触发
你必须要在File ——> Build Setting ——> Player Setting ——> Other ——> Active Input Handling 选择Both
或者只激活老输入系统 InputManager 才能让OnGUI
中内容有用 - 新输入系统支持UGUI,但是需要使用新输入系统输入模块(Input System UI Input Module)
Input System UI Input Module 参数相关
-
Send Pointer Hover To Parent - 是否将指针悬停事件发送给父对象
如果这个属性为true,那么当指针悬停在一个UI组件上时,
不仅这个元素会收到 ((20230815156689-lih1h0h “IPointerEnterHandler”)) 和 ((20230815156691-zf6m9cj “IPointerExitHandler”)) 的回调(接口提供的方法),它的所有父级对象也会收到这些回调 -
Move Repeat Delay - 生成初始 IMoveHandler 之间的初始延迟(秒)
OnMove 导航事件,并在移动操作保持激活状态时生成重复的导航事件
-
Move Repeat Rate - 移动动作保持激活时,生成重复导航事件之间的间隔(秒)
请注意,这是由帧速率限制的;每帧不会有多个移动重复事件,
因此,如果帧速率低于重复率,则有效重复率将低于此设置。
换句话说,就算你将间隔时间填的很小很小,它每帧也最多只执行一次 -
XR Tracking Origin - VR 跟踪原点
-
Deselect On Background CLick - 是否在没有点击到对象时取消选择
默认情况下,当指针被点击并且没有击中任何对象时,当前选择会被清除。即上一次点击选中的对象,这一次点击没有点中任何东西时,对象的选中将被取消
然而,这可能会妨碍键盘和游戏板导航,因为它们需要关闭当前选定的对象。要防止自动取消选择,请将此属性设置为false。 -
Pointer Behavior - 如何处理将输入送入UI的多个指针
用于处理多点选择
-
Single Mouse Or Pen But Multi Touch And Track
对于未分类为触摸或跟踪输入的所有输入,其行为类似于单个统一指针,对于跟踪和触摸输入,其行为类似于所有指针。
例如,如果在鼠标和笔上接收到并发输入,则将两者的输入馈送到同一UI指针实例中。其中一个的位置输入将覆盖另一个的位置。
或者说,鼠标和笔始终会统一的输入到同一个指针请注意,当从触摸或跟踪设备接收到输入时,鼠标和笔的单个统一指针将被删除,包括在鼠标/笔光标当前悬停在对象上时发送的((20230815156691-zf6m9cj “IPointerExit”))事件。也就是说。触屏设备仍将当作多个指针处理
-
Single Unified Pointer
所有指针输入都是统一的,因此只有一个指针。
这包括触摸和跟踪输入
这意味着,无论有多少设备将输入送入到UI的不同点上,只有帧中最后一个这样的输入才会生效并成为当前UI指针的位置。 -
All Pointers As Is
UI输入模块不会统一任何指针输入。
任何设备,包括提供输入指针类型动作的触摸和跟踪设备,都将是其自己的指针(或触摸输入的多个指针)
注意:这可能意味着UI中将有任意数量的指针,并且可能同时指向多个对象。
-
-
Actions Asset - 包含控制UI的所有操作的输入操作配置资产。
您可以使用以下属性选择资产中的哪些操作(输入配置文件里的InputAction) 对应于哪些UI输入。
默认情况下,这将引用名为DefaultInputActions的内置资产,该资产包含用于驱动UI的常见默认操作(其实就是我们在PlayerInput默认创建的输入配置文件)
如果要设置自己的操作,请创建自定义输入操作资源并在此处分配。
也就是可以自己创建一个输入配置文件来分配输入操作资源在Inspector中将新资源引用指定给此字段时,编辑器会尝试根据常用命名约定自动将操作映射到UI输入。
-
Point - 提供2D屏幕位置的动作。
用作指向UI元素的光标,以实现鼠标样式的UI交互。
设置为传递操作类型和向量2值类型。 -
Left Click - 映射到用于与UI交互的主光标按钮的操作。
设置为传递操作类型和按钮值类型。
-
Middle Click - 映射到用于与UI交互的中间光标按钮的操作
设置为传递操作类型和按钮值类型。
-
Right Click - 映射到用于与UI交互的辅助光标按钮的操作。
设置为传递操作类型和按钮值类型。
-
Scroll Wheel - 提供手势输入以允许在UI中滚动的操作。
设置为传递操作类型和向量2值类型。
-
Move - 一种操作,提供用于选择当前活动用户界面的二维矢量。
这允许游戏板或箭头键样式的UI导航。
设置为传递操作类型和向量2值类型 -
Submit - 与当前选择的UI接触或“单击”的操作。
设置为按钮动作类型。
-
Cancel - 退出与当前选定UI的任何交互的操作。
设置为按钮动作类型。
-
Tracked Position - 提供一个或多个空间跟踪设备(如XR hand控制器)的3D位置的动作。
结合跟踪设备方向,这允许通过指向空间中的UI可选择项进行XR样式的UI交互。 设置为传递操作类型和向量3值类型。
-
Tracked Orientation - 传递表示一个或多个空间跟踪设备(如XR hand控制器)旋转的四元数的操作。
结合跟踪设备位置,这允许通过指向空间中的UI可选择项进行XR样式的UI交互。 设置为传递操作类型和四元数值类型。
VR相关中使用新输入系统注意事项
如果想在VR项目中使用新输入系统配合UGUI使用,需要在 Canvas 对象上添加 Tracked Device Raycaster 组件
多人游戏使用多套UI
如果是同一设备上的多人游戏,每个人想要使用自己的一套独立UI,需要将EventSystem中的EventSystem组件替换为Multiplayer Event System组件
与EventSystem组件不同,可以在场景中同时激活多个MultiplayerEventSystem。
这样,您可以有多个玩家,每个玩家都有自己的Input System UI Input Module和 Multiplayer Event System组件
每个玩家都可以有自己的一组操作来驱动自己的UI实例。
如果您正在使用PlayerInput组件,还可以设置PlayerInput以自动配置玩家的 Input System UI Input Module 以使用玩家的操作
MultilayerEventSystem组件的属性与事件系统中的属性相同
此外,MultiplayerEventSystem组件还添加了一个playerRoot属性,您可以将其设置为一个游戏对象
该游戏对象包含此事件系统应在其层次结构中处理的所有UI可选择项
On-Screen组件相关
On-Screen组件可以模拟UI和用户操作的交互
-
On-Screen Button:按钮交互
使用该脚本的Button会自动拥有模拟某个按键的逻辑,此时按下挂载该脚本的Button就相当于按下了其设置的键位
- Control Path:要模拟的按键输入,
输入会触发什么由输入配置文件与脚本内的监听输入逻辑决定
- Control Path:要模拟的按键输入,
-
On-Screen Stick:摇杆交互
使用该脚本的Image贴图会自动拥有摇杆的逻辑
-
Movement Range:摇杆贴图可移动范围
-
Control Path:要模拟的摇杆输入,
输入会触发什么由输入配置文件与脚本内的监听输入逻辑决定 -
Behaviour:摇杆行为
-
Relative Position With Static Origin - 静态起点与相对位置
默认的模式,它会使摇杆的中心点固定在初始位置,手指的移动会相对于中心点来计算摇杆的值,而不是相对于摇杆的边界(该描述来自不靠谱的来源,真实情况存疑,仅供参考)
-
Exact Position With Static Origin
静态起点与绝对位置 -
Exact Position With Dynamic Origin
动态起点和绝对位置
-
-
Use lsolated Input Actions:
用来解决On-Screen Stick的输入和其他UI输入之间的冲突问题。
如果不勾选这个选项,那么当拖动摇杆时,摇杆的输入设备会在手指所属的设备(鼠标,触摸,笔等)和控件路径所指定的设备(例如游戏手柄)之间切换,这可能会导致摇杆的移动不稳定。如果勾选了这个选项,那么摇杆会使用一套独立的Input Action实例来驱动交互,而不是使用UI定义的Input Action。
这个选项的缺点是,指针的输入会在摇杆组件和UI使用的Input Action Asset中重复。
-