1. 程式人生 > >Unity 獲取UI中不同容器裡的相對座標

Unity 獲取UI中不同容器裡的相對座標

工程中要用到拖放功能,方案自然是要通用。所以寫的時候拖動顯示層與應用時的被拖動物件多數時候不在同一容器,也就是說本地座標是對不上的。這就需要用到座標轉換。我的方案中將拖動時顯示圖示的層單獨出來,所以我需要得到的是所有被拖動的源物件相對於此顯示層的座標。程式碼如下:

startDragPoint = rectTransform.InverseTransformPoint( mouseDownPoint );
//
Vector3 wp = socImage.transform.TransformPoint (Vector3.zero);
//
startDragLocation = rectTransform.InverseTransformPoint(wp);

rectTransform是用於顯示拖動圖示的顯示層的transform. 

socImage就是點選後和成一個拖動圖示的物件。 先將他的座標轉化為世界座標,再從世界座標轉換到此顯示層的本地座標。

另注題外話:用EventTrigger裡的beginDrag,drop能很方便的實現拖動到目標的功能。不過還是要自己寫程式碼。我沒看以系統有相應的元件。