UnityEngine.UIElements 中的类
/
继承自:UIElements.PointerEventBase_1
/
实现于:UnityEngine.UIElementsModule
当指针在视觉元素内部按下时发送。
在运行时 UI 中,每次用户触摸屏幕或按下鼠标按钮时,都会发送 PointerDownEvent
。
在编辑器 UI 中,当用户最初触摸屏幕或按下鼠标按钮时,会发送 PointerDownEvent
。但是,如果用户在不释放初始鼠标按钮的情况下按下其他鼠标按钮(右键或中键),则会发送 PointerMoveEvents 而不是 PointerDownEvent
。释放所有鼠标按钮并再次按下鼠标按钮会发送新的 PointerDownEvent
。PointerDownEvent
遵循默认指针 事件传播路径。它向下传递,向上冒泡,并且可以取消。
禁用的元素不会接收此事件。
有关 PointerDownEvent
与其他指针事件的关系信息,请参阅 PointerEventBase<T0> 和 指针事件。
其他资源:PointerMoveEvent、PointerUpEvent、PointerCancelEvent
// This example creates a ClickDetector class to detect a click sequence. namespace UnityEngine.UIElements { public class ClickDetector : VisualElement { public ClickDetector() { RegisterCallback<PointerDownEvent>(ProcessEvent); RegisterCallback<PointerMoveEvent>(ProcessEvent); RegisterCallback<PointerUpEvent>(ProcessEvent); } private void ProcessEvent<TEvent>(PointerEventBase<TEvent> evt) where TEvent : PointerEventBase<TEvent>, new() { if (evt.eventTypeId == PointerDownEvent.TypeId() && evt.button == 0) { StartClickTracking(evt); } else if (evt.eventTypeId == PointerMoveEvent.TypeId()) { // Button 1 was pressed while another button was already pressed. if (evt.button == 0 && (evt.pressedButtons & 1) == 1) { StartClickTracking(evt); } // Button 1 is released while another button is still pressed. else if (evt.button == 0 && (evt.pressedButtons & 1) == 0) { SendClickEvent(evt); } // Pointer movement detected or button state changed. else { UpdateClickStatus(evt); } } else if (evt.eventTypeId == PointerUpEvent.TypeId() && evt.button == 0) { SendClickEvent(evt); } }
private void StartClickTracking(IPointerEvent evt) { Debug.Log("Starting click sequence"); } private void UpdateClickStatus(IPointerEvent evt) { Debug.Log("Tracking"); } private void SendClickEvent(IPointerEvent evt) { Debug.Log("Completed click"); } } }
PointerDownEvent | 构造函数。避免创建新的事件实例。相反,使用 GetPooled() 从可重用事件实例池中获取实例。 |
Init | 将事件成员重置为其初始值。 |
bubbles | 返回此事件类型在事件传播路径中是否向上冒泡。 |
dispatch | 指示事件是否正在分派到视觉元素。在事件正在分派时,无法重新分派事件。如果您需要递归分派事件,建议您使用事件的副本。 |
imguiEvent | 此事件源头的 IMGUIEvent。源可以为 null,因为并非所有事件都是由 IMGUI 生成的。 |
isImmediatePropagationStopped | 指示是否为此事件调用了 StopImmediatePropagation()。 |
isPropagationStopped | 是否为此事件调用了 StopPropagation()。 |
originalMousePosition | IMGUI 事件的原始鼠标位置,在将其转换为当前目标局部坐标之前。 |
pooled | 事件是否从事件池中分配。 |
propagationPhase | 此事件的当前传播阶段。 |
target | 接收此事件的目标视觉元素。与 currentTarget 不同,此目标在事件沿传播路径发送到其他元素时不会更改。 |
timestamp | 创建事件的时间(以毫秒为单位)。 |
tricklesDown | 返回此事件是否在 TrickleDown 阶段沿事件传播路径向下发送。 |
eventTypeId | 检索此事件实例的类型 ID。 |
actionKey | 获取一个布尔值,指示平台特定的操作键是否按下。True 表示操作键已按下。False 表示未按下。 |
altitudeAngle | 获取触笔相对于表面的角度(以弧度为单位)。 |
altKey | 获取一个布尔值,指示 Alt 键是否按下。True 表示 Alt 键已按下。False 表示未按下。 |
azimuthAngle | 获取触笔相对于 x 轴的角度(以弧度为单位)。 |
button | 获取一个值,指示哪个鼠标按钮被按下或释放(如果有)以导致此事件:0 是左键,1 是右键,2 是中键。负值表示在此事件期间没有鼠标按钮更改状态。 |
clickCount | 获取按钮被按下的次数。 |
commandKey | 获取一个布尔值,指示 Windows/Cmd 键是否按下。True 表示 Windows/Cmd 键已按下。False 表示未按下。 |
ctrlKey | 获取一个布尔值,指示 Ctrl 键是否按下。True 表示 Ctrl 键已按下。False 表示未按下。 |
currentTarget | 获取事件的当前目标。 |
deltaPosition | 获取上一个鼠标事件期间指针的位置与当前鼠标事件期间指针的位置之间的差值。 |
deltaTime | 获取自上次记录的指针值变化以来经过的时间量(以秒为单位)。 |
isPrimary | 获取一个布尔值,指示指针是否是主指针。True 表示指针是主指针。False 表示不是。 |
localPosition | 获取当前目标坐标系中的指针位置。 |
modifiers | 获取指示修饰键(Alt、Ctrl、Shift、Windows/Cmd)是否按下的标志。 |
penStatus | 指定笔的状态。例如,笔是否与屏幕或平板电脑接触,笔是否倒置以及按钮是否按下。在 macOS 上,penStatus 不会反映按钮映射的更改。 |
pointerId | 获取发送事件的指针的标识符。 |
pointerType | 获取创建事件的指针类型。 |
position | 获取屏幕或世界坐标系中的指针位置。 |
pressedButtons | 获取描述当前按下的按钮的位掩码。 |
pressure | 获取触摸当前施加的压力量。 |
radius | 获取触摸半径的估计值。 |
radiusVariance | 获取触摸半径的准确性。 |
shiftKey | 获取一个布尔值,指示 Shift 键是否按下。True 表示 Shift 键已按下。False 表示未按下。 |
tangentialPressure | 获取施加到触笔上其他压力敏感控制的压力。 |
tilt | 分别指定笔相对于 X 轴和 Y 轴的角度(以弧度为单位)。 |
twist | 获取触笔围绕其轴的旋转(以弧度为单位)。 |
StopImmediatePropagation | 立即停止事件的传播。事件不会发送到传播路径上的其他元素。此方法可防止其他事件处理程序在当前目标上执行。 |
StopPropagation | 停止传播此事件。事件不会发送到传播路径上的其他元素。此方法不会阻止其他事件处理程序在当前目标上执行。如果在 TrickleDown 传播阶段调用此方法,它将阻止处理默认操作,例如,由于 PointerDownEvent 而导致元素获得焦点。 |
Dispose | IDispose 的实现。 |
PostDispatch | 允许子类在事件分派后执行自定义逻辑。 |
PreDispatch | 允许子类在事件分派之前执行自定义逻辑。 |
RegisterEventType | 将事件类注册到事件类型系统。 |
GetPooled | 从事件池中获取事件。使用此函数而不是创建新事件。使用此方法获取的事件需要释放回池中。您可以使用 Dispose() 释放它们。 |
TypeId | 检索此事件实例的类型 ID。 |
GetPooled | 从事件池中获取事件并使用给定值对其进行初始化。使用此函数而不是创建新事件。使用此方法获取的事件需要释放回池中。您可以使用 Dispose() 释放它们。 |