unity3d 概述
2019-07-21 本文已影响0人
terie
unity3d版本号
unity 5.x以后的版本,取消以数字命名的版本规则,采用年份表示。新的版本发布计划中包括两个版本,TECH版(技术前瞻版本)和LST版(稳定支持版本)。前者每年有三次大更,后者从前者的选择最后一个版本并且提供为期两年的支持。
游戏对象
游戏对象是一个很小的东西,负责引用外部资源,比如模型,贴图,声音,等等,其原理就是通过程序控制需要的游戏对象。unity3d的游戏对象其实就是在一个空的GameObject上挂几个脚本,比如Transform,Camera,Box Collider,等等。通常游戏内部提供的脚本叫做组件,而设计师自己定义的脚本才叫脚本(Script)。
Pivot和Center,Local和Global
这四个属性都是针对处于移动模式的时候,三维坐标轴在地图上的显示方式。
- Pivot将三维坐标轴的中心显示在物体的几何中心
- Center将三维坐标轴的中心显示在所有子物体的动力学中心
- Local模式下三维坐标轴的方向即本物体的方向。(即本物体在做旋转的时候,坐标轴也会跟着旋转)
- Global模式下三维坐标轴的方向是固定的,即全局的坐标轴方向。物体旋转不会影响Global坐标轴的方向。
在Inspector视图里Transform组件里的position,显示的永远是物体相对于父物体的坐标,坐标原点是父物体的Pivot坐标原点。但是在代码中Transform.position表示的是物体的全局坐标(绝对坐标),坐标原点即世界的原点。
多线程
Unity脚本不支持单线程,它是用C#的协程来模拟多线程。
Awake()和Start()的区别
在Unity中所有的Awake()会在任何脚本的Start()前面执行。两者都是永远只执行一次。但是计算机由于没有“同时”这个概念,所以,不同脚本的Awake()方法仍然是按照一定的顺序执行。这样造成的问题是,如果Awake()方法里有需要访问其他脚本的代码,同时这个脚本又在自己之后执行,就会出问题。所以Unity划分出了Awake()和Start(),让Awake()做真正的初始化,Start()才适合安全访问其他脚本的数据。