拖动操作的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 接口的检查器版本。

使用其中任何一个都应该得到相同的结果。无需访问事件触发器并将其添加到代码中,您可以添加组件,然后在对象上设置回调,类似于单击按钮。