1. 程式人生 > 其它 >Unity實現UI面板拖拽

Unity實現UI面板拖拽

UI元素可拖動的功能,可以使UI操作更開放,在和3D場景結合密切的UI介面需求更多,依託現在Unity3d的強大的UGUI系統可以很輕鬆的實現該功能。那麼到底是怎麼實現的呢?接下來阿然就教你一步步實現。

第一步:新建一個UI畫板

然後再建一個空物件ItemBox,空物件下邊建一個UI 的Image影象,Image中可以建你需要的東西

 接下來寫一個ItemBox的指令碼,將指令碼繫結到空物體ItemBox上 執行即可

指令碼原始碼:

public class ItemBox : MonoBehaviour, IPointerClickHandler, IBeginDragHandler, IEndDragHandler, IDragHandler
{
[SerializeField] private RectTransform dragTarget;
[SerializeField] private Canvas canvas;

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

public void OnDrag(PointerEventData eventData)
{
Vector3 uiPosition;
RectTransformUtility.ScreenPointToWorldPointInRectangle(dragTarget,eventData.position,eventData.enterEventCamera,out uiPosition);
dragTarget.position = uiPosition; //將當前時間攝像機的拖拽事件的位置賦值給當前UI
}

public void OnPointerDown(PointerEventData eventData)
{
}

public void OnPointerClick(PointerEventData eventData)
{
}

public void OnBeginDrag(PointerEventData eventData)
{
}

public void OnEndDrag(PointerEventData eventData)
{
}
}