c# - 拖拽操作的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() 中的操作也没有执行。
请纠正我做错了什么。这可能是什么解决方案?
解决方案
Physics Raycaster
您需要在物体上以及相机上安装某种对撞机。我相当有信心这EventTriggers
只是拖动/指针接口的检查器版本。
使用任何一个都应该以相同的结果结束。无需访问事件触发器并将其添加到代码中,您可以添加组件,然后在对象上设置回调,类似于按钮的 onclick。
推荐阅读
- python - 如何将浮点输入转换为相同的指数格式?
- c - 让冒泡排序与结构一起工作
- macos - 在哪里可以找到在 OSX 中创建 FaceTime 可比摄像头的示例
- python - DatabaseError:字段“school_id”没有默认值
- ios - IndexPathForRowAtPoint 不工作 iOS 13.4.1
- python - 查找出现在多列中的相同值
- c# - C#使用反射创建函数
- json - SwiftUI - 如何附加和显示嵌套的 JSON 数据
- c# - 在 C# 中使用 linq 查询将字符串从拳头名拆分为姓氏
- python - 在 Python 3 中使用正则表达式