Unity 拖動UI

weixin_34253539發表於2017-07-12

NGUI拖動UI
+Collider元件
+UIDrag Drop Item指令碼元件/或者UIDrag Object指令碼元件
。。。
UGUI拖動UI+以下指令碼
====================
//此指令碼掛載在要移動的如圖片UI上
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class UGUIDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
private bool isDrag = false;
//偏移量
private Vector3 offset = Vector3.zero;

public void OnBeginDrag(PointerEventData eventData)
{
    isDrag = false;
    SetDragObjPostion(eventData);
}

public void OnDrag(PointerEventData eventData)
{
    isDrag = true;
    SetDragObjPostion(eventData); 
}

public void OnEndDrag(PointerEventData eventData)
{
    SetDragObjPostion(eventData);
}



void SetDragObjPostion(PointerEventData eventData)
{
    RectTransform rect = this.GetComponent<RectTransform>();
    Vector3 mouseWorldPosition;

    //判斷是否點到UI圖片上的時候
    if (RectTransformUtility.ScreenPointToWorldPointInRectangle(rect, eventData.position, eventData.pressEventCamera, out mouseWorldPosition))
    {
        if (isDrag)
        {
            rect.position = mouseWorldPosition + offset;
        }
        else
        { 
           //計算偏移量
            offset = rect.position - mouseWorldPosition;
        }
    }
}

}

相關文章