目录
游戏脚本
- 编写C#代码,Unity会通过Roslyn来对C#代码进行编译,生成中间IL指令集,通过点击Unity界面中的Play运行,Unity通过Mono运行时解释DLL中的IL指令,最终将其翻译成CPU认识的机器码。
- 对于游戏打包,IL指令会通过IL2CPP被编译成C++代码,最终直接参与构建目标可执行程序。
- 由于C#代码已经转变为C++代码,在最终构建时,就可以很好的在发布平台打包了。(选择不同平台,生成Windows下的exe、安卓下的apk、IOS下的xcode等)
技巧
- 下面这个代码是更改物体的位置和旋转,如果物体有子物体,那么每次更改都需要同时更改子物体,导致开销较大,将其坐标和旋转同时设置,可以很大程度提升性能。
// 分开设置 transform.position = Vector3.zero; transform.rotation = Quaternion.Euler(Vector3.zero); // 同时设置 transform.SetPositionAndRotation(Vector3.zero, Quaternion.Euler(Vector3.zero));
- 实现延迟函数减少堆内存浪费的技巧。
// 普通方法,多次new对象 IEnumerator Call() { for(int i = 0