Version: 6000.3
语言: 中文
鼠标事件
小组活动

导航事件

当用户按下方向键、移动纵杆或按下Escape,Enter或箭头键。它们指示用户正在尝试导航 UI,但它们不限于特定的输入设备,例如键盘。与 Focus 事件的区别在于,导航事件不需要焦点移动到新的 UI 元素。

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

所有导航事件都会涓涓细流、冒泡且可取消,但建议在冒泡传播阶段监听这些事件。这是因为导航事件是由输入事件触发的,这些输入事件也可用于与单个控件交互。例如,按钮将对按下Enter键,它将取消NavigationSubmitEvent. 在冒泡阶段监听这些事件可确保它们是导航事件。

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

活动列表

导航移动事件

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

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

direction:导航方向。 (None,Left,Up,Right,Down)

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

导航取消事件

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

导航提交事件

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

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

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

using UnityEngine;
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}");
    }
}

其他资源

鼠标事件
小组活动