我们来学习一下Unity3D中对鼠标样式的设置处理、单例模式、还有世界坐标与本地坐标的理解变换
鼠标样式设置:
首先,要设置只要点到场景中鼠标就变成某种样式的话,可以直接在File的Build Settings中,选择Player Settings进行设置
而在场景中要设置鼠标样式改变鼠标样式的话,我们可以这样:
public Texture2D cursor_normal; //Texture2D类的鼠标样式图片
private Vector2 hotspot = Vector2.zero; //热点,鼠标点击的重点,V2.zero为左上角
private CursorMode mode = CursorMode.Auto; //鼠标指针类型,Auto为自动判断硬/软件上设置
public void SetNormal()
{
//设置样式
Cursor.SetCursor(cursor_normal, hotspot, mode);
}
设置单例模式:
单例模式保证应用只有一个全局惟一的实例,并且提供一个访问它的全局访问点。
继承monobehavior的类的单例:
public static T _instance;
private void Awake()
{
_instance = this;
}
普通的类的单例:
private static T instance;
public static T Instance
{
get
{
if (null == instance)
instance = new T();
return instance;
}
set { }
}
世界坐标与本地坐标:
世界坐标:
世界坐标是一个在根目录下的物体在Unity世界坐标系所对应出来的位置,唯一。
处于最高层级的物体,其Inspector面板内的position即为世界坐标。
无论哪个层级,其Transform的API中的position属性,均是物体的世界坐标
本地坐标:
局部坐标是一个物体以其他物体作为参考系(不再是以世界零点作为参考系)所获得的位置信息。
子物体在Inspector面板内的position信息即为子物体以父物体作为零点所得到的局部坐标。
B若不再是A的子物体,而是和A同层级,那么B的坐标就应该等于之前的局部坐标+A的坐标,如果A是世界坐标内的物体,那么所得结果就是B的世界坐标。
无论哪个层级,其Transform的API中的position属性,均是物体的世界坐标
本地坐标转世界坐标:
- 子物体的世界坐标=父物体的世界坐标+子物体的本地坐标(一层子物体,多层往下递推,道理一样)
- 物体的transform下的方法TransformPoint(new Vector3(0,0,0))(可以获取物体世界坐标相对于任意一点的位置)
TransformPoint(new Vector3(0,0,0))
世界坐标转本地坐标:
- Transform的API提供一个方法InverseTransformPoint,可以获得任意物体相对于另一个物体的局部坐标
go1.InverseTransformPoint(go2)
商业转载 请联系作者获得授权,非商业转载 请标明出处,谢谢