首页 > 解决方案 > 拖拽操作的Unity事件

问题描述

我正在检查不同的统一事件以通过鼠标拖动。我发现 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#unity3deventtrigger

解决方案


Physics Raycaster您需要在物体上以及相机上安装某种对撞机。我相当有信心这EventTriggers只是拖动/指针接口的检查器版本。

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


推荐阅读