初衷
因項(xiàng)目的需求傀顾,在制作中需要讓UGUI中的組件,追隨鼠標(biāo)的運(yùn)動軌跡忿族。由于個人在以前使用中對于UGUI的坐標(biāo)系了解不深锣笨,在使用中產(chǎn)生了一些問題蝌矛,在此對UGUI的坐標(biāo)系做一個簡單的記錄,以備后面查詢错英。
說明
Unity3D 采用Input.mousePosition來獲取當(dāng)前鼠標(biāo)的位置入撒,獲取的位置是相對于屏幕坐標(biāo)系的,而UGUI使用的坐標(biāo)系和屏幕坐標(biāo)系不是同一個坐標(biāo)系椭岩,
在UGUI中組件使用的坐標(biāo)都是2D在Rect中的一個相對坐標(biāo)茅逮,所以在實(shí)際使用中需要進(jìn)行轉(zhuǎn)換。
<pre>
public class test : MonoBehaviour
{
public RectTransform myRectTransform; // 目標(biāo)組件
public Canvas myCanvas; // 當(dāng)前畫布
// Update is called once per frame
void Update ()
{
Vector2 vT = Vector2.zero;
// 通過此函數(shù)判哥,將鼠標(biāo)坐標(biāo)献雅,從屏幕坐標(biāo),轉(zhuǎn)換到UGUI坐標(biāo)
RectTransformUtility.ScreenPointToLocalPointInRectangle(myCanvas.transform as RectTransform, Input.mousePosition, myCanvas.worldCamera, out vT);
myRectTransform.localPosition = vT;
}
}
</pre>
#######附帶一說塌计,在Unity3D中可以使用函數(shù)Screen.showCursor(老版本)挺身、UnityEngine.Cursor.visible來顯示和隱藏鼠標(biāo)