拖动操作的Unity事件
Unity Event for drag operation
我正在检查鼠标拖动的不同统一事件。我发现 IDragHandler 接口提供了一个方法 OnDrag ,当任何 UI 组件发生拖动操作时调用该方法(如果我错了请纠正我)。
我找到了另一种方法 'EventTrigger.OnDrag( PointerEventData data )'
在文档中,写道 -
“每次在拖动过程中移动指针时由 EventSystem 调用”
因此,我在下面的文档规定的统一项目中使用了它
private void Start()
{
//Fetch the Event Trigger component from your GameObject
trigger = GetComponent<EventTrigger>();
//Create a new entry for the Event Trigger
EventTrigger.Entry entry = new EventTrigger.Entry();
//Add a Drag type event to the Event Trigger
entry.eventID = EventTriggerType.Drag;
//call the OnDragDelegate function when the Event System detects dragging
entry.callback.AddListener((data) => OnDragDelegate((PointerEventData) data));
//Add the trigger entry
trigger.triggers.Add(entry);
}
void OnDragDelegate(PointerEventData data)
{
DragToMotion();
}
因此,OnDragDelegate() 应该在发生任何拖动操作时被调用。我有一个带有盒子对撞机的立方体,我将鼠标拖到它上面。检查inspector,发现拖动时没有调用方法,DragToMotion()中的操作也没有执行。
请指正我做错了什么。有什么解决方案?
您需要在物体上安装某种碰撞器,并在相机上安装 Physics Raycaster
。我相当有信心 EventTriggers
只是 drag/pointer 接口的检查器版本。
使用其中任何一个都应该得到相同的结果。无需访问事件触发器并将其添加到代码中,您可以添加组件,然后在对象上设置回调,类似于单击按钮。
我正在检查鼠标拖动的不同统一事件。我发现 IDragHandler 接口提供了一个方法 OnDrag ,当任何 UI 组件发生拖动操作时调用该方法(如果我错了请纠正我)。 我找到了另一种方法 'EventTrigger.OnDrag( PointerEventData data )' 在文档中,写道 - “每次在拖动过程中移动指针时由 EventSystem 调用”
因此,我在下面的文档规定的统一项目中使用了它
private void Start()
{
//Fetch the Event Trigger component from your GameObject
trigger = GetComponent<EventTrigger>();
//Create a new entry for the Event Trigger
EventTrigger.Entry entry = new EventTrigger.Entry();
//Add a Drag type event to the Event Trigger
entry.eventID = EventTriggerType.Drag;
//call the OnDragDelegate function when the Event System detects dragging
entry.callback.AddListener((data) => OnDragDelegate((PointerEventData) data));
//Add the trigger entry
trigger.triggers.Add(entry);
}
void OnDragDelegate(PointerEventData data)
{
DragToMotion();
}
因此,OnDragDelegate() 应该在发生任何拖动操作时被调用。我有一个带有盒子对撞机的立方体,我将鼠标拖到它上面。检查inspector,发现拖动时没有调用方法,DragToMotion()中的操作也没有执行。
请指正我做错了什么。有什么解决方案?
您需要在物体上安装某种碰撞器,并在相机上安装 Physics Raycaster
。我相当有信心 EventTriggers
只是 drag/pointer 接口的检查器版本。
使用其中任何一个都应该得到相同的结果。无需访问事件触发器并将其添加到代码中,您可以添加组件,然后在对象上设置回调,类似于单击按钮。