Unity3D :运行时 UI 事件系统
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
运行时 UI 事件系统
UI 工具包使用事件系统
处理输入并将事件发送到所有活动面板。
这用户界面
Toolkit 的事件系统可以从 IMGUI 和旧版接收事件输入管理器
.导航事件是从旧版输入管理器中定义的轴创建的。其他事件来自 IMGUI 事件队列。
除特定实例外,无需将组件添加到现场
以使用事件系统。
具有多个面板设置资源的事件系统
如果场景使用多个面板设置资源,则事件系统会根据其排序顺序将指针事件发送到其面板。指针事件在面板中传播,直到面板对其做出反应。
使用事件影响焦点元素的第一个面板将成为事件系统的焦点面板。该面板将继续接收键盘事件,直到另一个事件导致另一个面板成为焦点面板。
注意:停止事件的传播和给予元素焦点是两件不同的事情。例如,单击按钮时,它会停止传播,只允许按钮对被按下做出反应,但不会阻止单击的其他默认操作,例如为按钮提供焦点,或者通常,为单击的任何可聚焦元素提供焦点。
将 uGUI 与 UI 工具包结合使用
您可以同时使用 UI 工具包 UI 文档和 uGUI 组件。
在场景中添加第一个 uGUI 元素时,事件系统和独立输入模块会自动添加到场景中:
- 事件系统允许 uGUI 对象响应事件。
- 独立输入模块将事件调度到 UI 工具包元素。
事件系统读取场景并执行事件,而独立输入模块解释输入并请求事件执行。您可以将独立输入模块替换为其他输入模块。其他输入模块会更改消耗的输入,但所有事件仍会通过事件系统执行。
UI 工具包使用面板的排序顺序,并将其与 uGUI 画布和其他有效光线投射目标的排序顺序进行比较,以确定指针事件是应发送到 UI 工具包元素还是 uGUI 对象,还是发送到场景中的其他内容。同样,UI 工具包设置事件系统,以确保当 UI 工具包面板想要获得焦点时,它会从其他 uGUI 对象中删除焦点,并且当 uGUI 对象变为选中状态时,UI 工具包面板会自动失去其焦点。currentSelectedGameObject
要手动添加事件系统,请选择游戏对象> UI >事件系统。
将事件系统和输入系统与 UI 工具包配合使用
当您将 UI 工具包(和 uGUI)与不同的输入系统一起使用时,您需要选择不同的输入模块和事件系统。
下表描述了每个输入系统用法所需的组件和设置:
用法 | 必需组件 | 主动输入处理 |
---|---|---|
具有旧版输入管理器的 UI 工具包元素 | 使用默认事件系统。不需要场景组件。 | 输入管理器(旧)。 |
带有输入系统包的 UI 工具包元素 | 输入系统 UI 输入模块和事件系统组件。 | 输入系统包(新) |
具有旧版输入管理器的 UI 工具包元素和 uGUI 组件 | 独立输入模块和事件系统组件。 | 输入管理器(旧)或两者。 |
带有输入系统包的 UI 工具包元素和 uGUI 组件 | 输入系统 UI 输入模块和事件系统组件。 | 输入系统包(新)或两者兼而有之 |
您可以在“编辑>项目设置”>“播放器”>“活动输入处理”中找到“活动输入处理”设置。
使用输入系统包
可以将 UI 工具包与输入系统包一起使用:
- 使用程序包管理器安装输入系统程序包。
- 选择“编辑”>“项目设置”>播放器。
- 将“活动输入处理”设置为“输入系统包(新)”。
- 选择游戏对象> UI >事件系统。 这将添加一个事件系统 游戏对象
这包括场景中的独立输入模块。该模块显示一条错误消息以及检查员
窗。 - 选择“替换为输入系统 UIInput模块”,将独立输入模块替换为输入系统 UI 输入模块。输入系统 UI 输入模块及其随附的事件系统允许正确调度 UI 工具包和 uGUI 元素的事件。
由3D建模学习工作室整理翻译,转载请注明出处!