初衷
因项目的需求,在制作中需要让UGUI中的组件,追随鼠标的运动轨迹。由于个人在以前使用中对于UGUI的坐标系了解不深,在使用中产生了一些问题,在此对UGUI的坐标系做一个简单的记录,以备后面查询。
说明
Unity3D 采用Input.mousePosition来获取当前鼠标的位置,获取的位置是相对于屏幕坐标系的,而UGUI使用的坐标系和屏幕坐标系不是同一个坐标系,
在UGUI中组件使用的坐标都是2D在Rect中的一个相对坐标,所以在实际使用中需要进行转换。
<pre>
public class test : MonoBehaviour
{
public RectTransform myRectTransform; // 目标组件
public Canvas myCanvas; // 当前画布
// Update is called once per frame
void Update ()
{
Vector2 vT = Vector2.zero;
// 通过此函数,将鼠标坐标,从屏幕坐标,转换到UGUI坐标
RectTransformUtility.ScreenPointToLocalPointInRectangle(myCanvas.transform as RectTransform, Input.mousePosition, myCanvas.worldCamera, out vT);
myRectTransform.localPosition = vT;
}
}
</pre>
#######附带一说,在Unity3D中可以使用函数Screen.showCursor(老版本)、UnityEngine.Cursor.visible来显示和隐藏鼠标