在Unity上实现OnBeginDrag,OnDrag等回调 [英] Implement OnBeginDrag, OnDrag, etc. callback on Unity

查看:3225
本文介绍了在Unity上实现OnBeginDrag,OnDrag等回调的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用简单的多维数据集对象在场景上实现摄像机控制器.

I'm trying to implement a camera controller on a scene with a simple cube object.

我在捕获android上的触摸事件时遇到问题.

I'm having problem on catching the touch events on android.

最简单的方法是什么?

我已经尝试过 https://docs.unity3d.com/ScriptReference/EventSystems.EventTrigger.html

这是我到目前为止所做的:

This is what I did so far:

  • 在主相机上添加了光线投射器
  • 在多维数据集上添加了一个事件触发器
  • 将脚本应用于多维数据集

  • added a raycaster on the main camera
  • added an event trigger on the cube
  • applied the script on the cube

EventTrigger trigger = GetComponent<EventTrigger>();
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.Drag;
entry.callback.AddListener((data) => {
   OnDragDelegate((PointerEventData)data); 
});
trigger.triggers.Add(entry);
...
public void OnDragDelegate(PointerEventData data)

推荐答案

我认为最简单的方法是使用DragHandler接口:

I think the simplest way is to use DragHandler interfaces :

using UnityEngine.EventSystems;

public class Drag: MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    public void OnBeginDrag(PointerEventData eventData)
    {
        print("OnBeginDrag");
    }

    public void OnDrag(PointerEventData eventData)
    {
        print("OnDrag");        
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        print("OnEndDrag");        
    }
}

通过这种方式,它不仅可以在Android中运行,而且还可以在Unity编辑器中对其进行测试.

In this way not only it works in Android, but also you can test it in Unity Editor.

这篇关于在Unity上实现OnBeginDrag,OnDrag等回调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆