unity 鼠标拖拽ui

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class DrapAndDrop : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{

    private RectTransform rectTransform;
    /// <summary>
    /// 判断碰撞是否正确
    /// </summary>
    public bool isRight;
    /// <summary>
    /// 碰撞物体的名字
    /// </summary>
    private string CollisionName;
    /// <summary>
    /// 判断物体的坐标
    /// </summary>
    private Vector3 collisionPos;
    /// <summary>
    ///是否拖拽
    /// </summary>
    private bool isDrage;

 

    void Start()
    {
        rectTransform = GetComponent<RectTransform>();
    }

    public void OnBeginDrag(PointerEventData eventData)
    {
        //Debug.Log("开始拖拽");
    }

    public void OnDrag(PointerEventData eventData)
    {
        Vector3 pos;
        RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, eventData.position, eventData.enterEventCamera, out pos);
        rectTransform.position = pos;
        isDrage = true;
    }


    public void OnEndDrag(PointerEventData eventData)
    {
        //Debug.Log("物体名字:" + CollisionName);
        isDrage = false;
    }

 

    private void OnTriggerStay2D(Collider2D collision)
    {
        //print("被碰撞物体是:" + collision.name);
        CollisionName = collision.name;
        collisionPos = collision.transform.localPosition;
        Panduan();
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        isRight = false;
        CollisionName = null;
    }


    /// <summary>
    /// 正确与否判断
    /// </summary>
    private  void Panduan()
    {
        //没有停止拖拽不进行判断
        if (isDrage) return;
        //进行判断
        if (CollisionName.Substring(0, 1) == "q")
        {
            int dragNumber = int.Parse(this.gameObject.name.Substring(1));
            int collisionNumber = int.Parse(CollisionName.Substring(1));

            this.gameObject.transform.localPosition = collisionPos;
            //数字相同,就是判断正确
            if (dragNumber == collisionNumber)
            {
                isRight = true;
            }
            else
            {
                isRight = false;
            }

        }
        else
        {
            //print("碰到其他物体");
            isRight = false;
            CollisionName = null;
        }

    }

 

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值