当您处理指针输入时,您可能希望控件捕获指针。当一个视觉元素可视化树的一个节点,它实例化或派生自 C# VisualElement
类。您可以设置外观样式,定义行为,并将其显示在屏幕上作为 UI 的一部分。更多信息
参见 词汇表捕获指针时,Unity 会将与指针关联的所有事件发送到该视觉元素,而不管指针是否悬停在该视觉元素上。例如,如果您创建一个接收拖动事件并捕获指针的控件,则无论指针位置如何,该控件仍会接收拖动事件。
Manipulator
类提供了一种方便的方法来捕获指针。Manipulator
类是所有操纵器的基类。操纵器是一个处理指针输入并将事件发送到视觉元素的类。例如,Clickable
类是一个操纵器,当用户单击视觉元素时,它会发送 PointerDownEvent
。在 PointerDownEvent
之后,某些元素必须捕获指针位置以确保它接收所有后续的指针事件,即使光标不再悬停在元素上也是如此。例如,当您单击按钮、滑块或滚动条时。
要捕获指针,请调用 PointerCaptureHelper.CapturePointer
。
要释放指针,请调用 PointerCaptureHelper.ReleasePointer
。如果您在调用 CapturePointer()
时另一个元素已捕获指针,则该元素会收到 PointerCaptureOutEvent
事件并失去捕获。
在任何时刻,应用程序中只有一个元素可以拥有捕获权。当某个元素拥有捕获权时,它是所有后续指针事件的目标,除了鼠标滚轮事件。这仅适用于那些还没有设置目标并依赖于分派过程来确定目标的指针事件。
有关更多信息,请参见 捕获事件。