参考:《Unity游戏优化第2版》
为什么要进行内存管理?
内存管理是性能优化的一个重要方面。
可能造成性能问题的原因有2个:
● 不必要的内存分配:垃圾回收开销大,占用CPU(用户体验差?怎么差了?会卡?)
● 内存泄露:导致崩溃
通过unity高效使用内存需要学会这些:
● Unity引擎底层
● Mono平台
● C#语言
● IL2CPP脚本后端的工作原理
为什么不只是关注高层问题呢?
因为计算机是个复杂的系统,如果长期脱离底层问题,可能会导致潜在灾难。
为什么会有Mono和IL2CPP
因为游戏引擎的设计方案通常是这样的:
● 在底层运行C++,处理渲染、动画、资源管理等;
● 为要实现的玩法逻辑提供高级脚本语言。
而Unity也是构建在C++之上的,并在开始的时候选择了Mono来提供这个特性(解决脚本语言到本地代码的过程)。
托管语言、托管代码
托管代码是:必须在CLR上运行的源码。
通常“托管”可以指代:依赖于独立运行时环境来执行,且由自动垃圾回收进行监控。
Mono
Mono是一个开源项目,本质上它是.NET类库的开源重置。它支持很多不同的编程语言,可以将其编译为CIL。
从IDE切换到Unity编辑器时,代码会自动编译。