Unity当中的OnBeginDrag、OnDrag、OnEndDrag

本篇文章将向您讲述这三个函数的用途及用法,根据官网API数据,只有寥寥几句话,这显然远远不够用于我们来学习。

用途:用于检测对象何时被拖动

或者使用(Event Tigger)设置不同的拖拽情况,来实现这一效果

本篇主要讲述采用c#脚本来实现在unity当中,像《炉石传说》的卡牌一样来进行拖拽操作

开始拖拽:OnBeginDrag

正在拖动:OnDrag

停止拖动:OnEndDrag

需要将脚本添加到的位置:这个脚本是添加到你想要拖动的卡牌上面,或者是图片

首先,我们需要创建一个unity自带的一个类库

将他添加到我们的脚本当中

using UnityEngine.EventSystems;

因为c#是一个面向对象的语言,因此我们要继承一个接口,通常后面会默认继承:MonoBehaviour

但我们还需要再添加三个:IBeginDragHandler代表:开始拖拽)和:IEndDragHandler(代表:结束拖拽),还有IDropHandler表示:拖拽中并且实现接口,像这样:

    public void OnBeginDrag(PointerEventData eventData)//开始
    {
        print("start");
    }

    public void OnDrag(PointerEventData eventData)//拖拽中
    {
        print("ing");
        transform.position = eventData.position;//将鼠标拖拽的位置实时的赋给卡牌(此时鼠标会有    一点bug,我们的卡牌会跳动一下,如果你想解决这个问题,那就需要控制下角度)
    }

    public void OnEndDrag(PointerEventData eventData)//结束
    {
        print("of crouse");
    }

当然将这篇代码直接附到上面,当你按住卡片时他就会被鼠标拖拽

底层逻辑:鼠标以射线的形式控制卡片(对象),进行在屏幕上移动

这样我们拖动卡牌就完成了

但实际上我们往往需要将卡牌吸附到某一区域

只会拖动是远远不够的

所以,我们要将我们制作好的卡片封装好,使它变成一个预制体

猜你喜欢

转载自blog.csdn.net/qq_46043095/article/details/124332755