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)
{
}
}