Unity3D :导航事件

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

导航事件

当用户按方向键、移动操纵杆或按 或箭头键时,导航事件在运行时发生。它们是用户尝试导航的指示器EscapeEnter用户界面
,但它们不限于特定的输入设备,例如键盘。与焦点](UIE-焦点事件.html)事件的区别在于,导航事件不需要焦点移动到新的 UI 元素。

所有导航事件的基类都是 NavigationEventBase。

所有导航事件都会向下滴、冒泡并且是可取消的,但建议在冒泡传播阶段侦听这些事件。这是因为导航事件由输入事件触发,这些输入事件也可用于与各个控件交互。例如,按钮将通过单击按钮对按键的按下做出反应,并且它将取消 .在冒泡阶段侦听这些事件可确保它们是导航事件。EnterNavigationSubmitEvent

事件描述涓涓细流冒泡可取消
导航移动事件当用户进行移动输入时发送。
导航取消事件当用户进行取消输入时发送。
导航提交事件当用户进行提交输入时发送。

事件列表

导航移动事件

当用户按下方向键、移动操纵杆或按箭头键时发送。NavigationMoveEvent

某些控件将使用箭头键来实现其自己的功能。例如,ListView 允许用户使用向上和向下箭头键选择项目。在这种情况下,控件将取消 ,并且事件不会进入冒泡阶段。NavigationMoveEvent

方向:导航的方向。(, , , ,NoneLeftUpRightDown)

移动:移动向量。如果事件是由模拟轴输入(如操纵杆)触发的,则此属性允许访问方向矢量。

导航取消事件

当用户取消当前导航操作(例如按键盘上的“Escape”键)时触发。请务必注意,此事件不会影响当前焦点元素,这意味着在取消之前具有焦点的 UI 元素仍处于选中状态。NavigationCancelEvent

导航提交事件

当用户按下提交按钮(例如按键盘上的“Enter”键)时触发。NavigationSubmitEvent

如果控件处理事件本身,它将取消事件,防止它进入冒泡阶段。例如,具有焦点的文本字段将阻止冒泡。另一方面,可聚焦的标签或图像将允许 冒泡到其父元素,允许它们在需要时处理事件。NavigationSubmitEventNavigationSubmitEvent

下面的代码示例演示如何在运行时 UI 中注册导航事件的回调:

using UnityEngine.UIElements;

public class MyNavigationHandler : MonoBehaviour
{
  void OnEnable()
  {
    // Get a reference to the root visual element
    var uiDocument = GetComponent<UIDocument>();
    var rootVisualElement = uiDocument.rootVisualElement;

    // Register for navigation events
    rootVisualElement.RegisterCallback<NavigationCancelEvent>(OnNavCancelEvent);
    rootVisualElement.RegisterCallback<NavigationMoveEvent>(OnNavMoveEvent);
    rootVisualElement.RegisterCallback<NavigationSubmitEvent>(OnNavSubmitEvent);
  }

  private void OnNavSubmitEvent(NavigationSubmitEvent evt)
  {
    Debug.Log($"OnNavSubmitEvent {evt.propagationPhase}");
  }

  private void OnNavMoveEvent(NavigationMoveEvent evt)
  {
    Debug.Log($"OnNavMoveEvent {evt.propagationPhase} - move {evt.move} - direction {evt.direction}");
  }

  private void OnNavCancelEvent(NavigationCancelEvent evt)
  {
    Debug.Log($"OnNavCancelEvent {evt.propagationPhase}");
  }
}


3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :鼠标事件 (mvrlink.com)

下一篇:Unity3D :面板事件 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号