拖拽排序(demo)

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class OnTestDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerEnterHandler
{
    private Vector3 mBeginPos;
    private Image mimage;
    private Canvas mCanvas;
    private Transform mCurrentParent;
    void Start()
    {
        mBeginPos = transform.position;
        mCurrentParent = transform.parent;
        mimage = transform.GetComponent<Image>();
        mCanvas = GameObject.Find("Canvas").GetComponent<Canvas>();
    }
    public void OnBeginDrag(PointerEventData eventData)
    {
        mimage.raycastTarget = false;
        mBeginPos = transform.position;
        transform.SetAsLastSibling();
    }
    public void OnPointerEnter(PointerEventData eventData)
    {
    }
    public void OnDrag(PointerEventData eventData)
    {
        transform.parent = mCanvas.transform;
        transform.position = Input.mousePosition;
        transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
        OnTestDrag drag = eventData.pointerEnter.GetComponent<OnTestDrag>();
        if (drag != null && drag.transform != transform)
            transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        OnTestDrag drag = eventData.pointerEnter.GetComponent<OnTestDrag>();
        if (drag != null && drag.transform != transform)
        {
            Vector3 pos = drag.transform.position;
            drag.transform.position = mBeginPos;
            transform.position = pos;
            transform.localScale = Vector3.one;
            transform.parent = drag.transform.parent;
            drag.transform.parent = mCurrentParent;
            mCurrentParent = transform.parent;
        }
        else
        {
            transform.position = mBeginPos;
            transform.localScale = Vector3.one;
            transform.parent = mCurrentParent;
            mCurrentParent = transform.parent;
        }
        mimage.raycastTarget = true;
    }

}

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

public class Chose_tool : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerEnterHandler
{
    private Vector3 mBeginPos;
    private Image mimage;
    private Canvas mCanvas;
    private Transform mCurrentParent;
    void Start()
    {
      
        mimage = transform.GetComponent<Image>();
        mCanvas = GameObject.Find("Canvas").GetComponent<Canvas>();
    }
    public void OnBeginDrag(PointerEventData eventData)
    {
        mBeginPos = transform.position;
        mCurrentParent = transform.parent;

        mimage.raycastTarget = false;
        mBeginPos = transform.position;
        transform.SetAsLastSibling();
    }
    public void OnPointerEnter(PointerEventData eventData)
    {
    }
    public void OnDrag(PointerEventData eventData)
    {
      if (Input.mousePosition.x < 0 || Input.mousePosition.x > Screen.width || 
         Input.mousePosition.y < 0 || Input.mousePosition.y > Screen.height)
        {
            
            return;
        }
        transform.parent = mCanvas.transform;
        transform.position = Input.mousePosition;
        transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);

      
        if (eventData.pointerEnter.tag == "point")
        {
            transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
            print("dadasda");
        }
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        GameObject game_obj = eventData.pointerEnter;
        if (game_obj.tag == "point")
        {
            Vector3 pos = game_obj.transform.position;
          
            transform.position = pos;
            transform.localScale = Vector3.one;
            transform.parent = game_obj.transform;
            
            mCurrentParent = transform;
           
        }
        else
        {
            Chose_tool drag = eventData.pointerEnter.GetComponent<Chose_tool>();
            if (drag != null && drag.transform != transform)
            {
                Vector3 pos = drag.transform.position;
                drag.transform.position = mBeginPos;
                transform.position = pos;
                transform.localScale = Vector3.one;
                transform.parent = drag.transform.parent;
                drag.transform.parent = mCurrentParent;

                mCurrentParent = transform.parent;
            }
            else
            {
                transform.position = mBeginPos;
                transform.localScale = Vector3.one;
                transform.parent = mCurrentParent;
                mCurrentParent = transform.parent;
            }

        }

       
        mimage.raycastTarget = true;
    }

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值