![4c6a4ce92333dc171ff930eb4230a1ed.png](https://img-blog.csdnimg.cn/img_convert/4c6a4ce92333dc171ff930eb4230a1ed.png)
《游戏AI程序设计实战》作者
Github:onelei - Overview
CSDN:https://blog.csdn.net/onelei1994
QQ群:754814245
========================
【Unity UGUI】屏幕坐标转换
Unity的RectTransformUtility函数里面提供了常用的坐标系之间的转换关系。
![d605d9bedc63c65604ac13d73deee473.png](https://img-blog.csdnimg.cn/img_convert/d605d9bedc63c65604ac13d73deee473.png)
因为RectTransformUtility里面提供的函数是环形结构,所以屏幕坐标,UGUI坐标,世界坐标三者之间可以相互转换。
由于函数都需要用到场景相机和UGUI相机,所以定义两个相机变量。
/// <summary>
/// 场景相机
/// </summary>
public static Camera ScenceCamera;
/// <summary>
/// UGUI相机
/// </summary>
public static Camera UGUICamera;
下面开始看坐标系之间的转换接口。
世界坐标->屏幕坐标
WorldToScreenPoint
/// <summary>
/// 世界坐标转屏幕坐标
/// </summary>
/// <param name="position"></param>
/// <returns></returns>
public static Vector2 WorldToScreenPoint(Vector3 worldPoint)
{
return RectTransformUtility.WorldToScreenPoint(ScenceCamera, worldPoint);
}
/// <summary>
/// 世界坐标转屏幕坐标
/// </summary>
/// <param name="camera"></param>
/// <param name=