【发布时间】:2021-11-18 23:00:57
【问题描述】:
我正在检查不同的统一事件以进行鼠标拖动。我发现 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()。我有一个带有盒子碰撞器的立方体,我将鼠标拖到它上面。我检查了检查器,但发现拖动时没有调用任何方法,DragToMotion() 中的操作也没有执行。
请纠正我做错了什么。有什么办法可以解决这个问题?
【问题讨论】:
标签: c# unity3d eventtrigger