包含此页的版本:
不含此页的版本:
这事件系统一种根据输入(无论是键盘、鼠标、触摸还是自定义输入)向应用程序中的对象发送事件的方法。事件系统由几个组件组成,这些组件协同工作以发送事件。更多信息
请参阅术语表侦听来自作系统的事件或脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表,然后使用 EventDispatcher 将这些事件分派到视觉元素实例化或派生自 C# 的可视化树的节点VisualElement类。您可以设置外观样式、定义行为并将其作为 UI 的一部分显示在屏幕上。更多信息
请参阅术语表.事件调度程序为其发送的每个事件确定适当的调度策略。一旦确定,调度员就会执行策略。
视觉元素实现多个事件的默认行为。这涉及创建和执行其他事件。例如,一个PointerMoveEvent可以生成额外的PointerEnterEvent和PointerLeaveEvent.这些事件进入队列并在当前事件之后进行处理。例如,PointerMoveEvent在PointerEnterEvent和PointerLeaveEvent事件。
每个事件类型都有自己的调度行为。每种事件类型的行为分为两个阶段:
有关每种事件类型的调度行为列表,请参阅事件参考页面。
事件调度器选择事件目标后,计算事件的传播路径。传播路径是接收事件的视觉元素的有序列表。传播路径按以下顺序发生:
大多数事件类型都会发送到传播路径上的所有元素。某些事件类型会跳过冒泡阶段,并且某些事件类型仅发送到事件目标。
如果您隐藏或禁用某个元素,它将不会接收事件。事件仍然会传播到隐藏或禁用元素的祖先和后代。
当事件沿着传播路径传播时,Event.currentTarget更新处理事件的元素。在事件回调函数中,有两个属性记录调度行为:
EventBase.currentTarget是注册回调的视觉元素。EventBase.target是事件发生的元素,例如指针正下方的元素。事件的目标取决于事件类型。对于指针事件,目标通常是最顶层的可选择元素,直接位于指针下方。对于键盘事件,目标是具有焦点的元素。
UI Toolkit 事件具有target包含对事件发生的元素的引用的属性。对于源自作系统的大多数事件,分派过程会自动查找事件目标。
目标元素存储在EventBase.target并且在调度过程中不会改变。该物业Event.currentTarget当前处理事件的视觉元素的更新。
大多数指针事件使用拾取模式来确定其目标。这VisualElement类有一个pickingMode支持以下值的属性:
PickingMode.Position(默认):根据位置矩形执行拾取。PickingMode.Ignore:防止作为指针事件的结果进行拾取。您可以覆盖VisualElement.ContainsPoint()执行自定义交集逻辑的方法。