Unity3D中三个零散概念——鼠标样式、单例模式、世界与本地坐标

我们来学习一下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)

 

 

 


 

 

商业转载 请联系作者获得授权,非商业转载 请标明出处,谢谢

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轻舟在过

您的支持是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值