知识补充
Mono内存和GC
Unity的脚本申请的内存称为Mono内存(IL2CPP环境下就是IL2CPP内存),注意不要把它和资产(模型、音频等)所占用的内存搞混了。
我们常说的GC和Mono内存有关,Mono内存刚开始给20M,如果随着软件的进行超过了这个值,就会触发GC,触发后如果内存还不够,就会尝试增加内存,变为40M。Mono内存只会增不会减,所以我们在脚本中要控制好类的释放,不能总是在new
Unity的关闭GC
Unity有手动控制GC的功能,详见:
Unity - Scripting API: GarbageCollector
Resources.UnloadAsset
在ResourceManager.UnloadUnusedAssets
方法中,我们使用了Resources.UnloadUnusedAssets()
来清理编辑器下的资源。
1 | /// <summary> |
我们如果使用Resources.UnloadAsset
并且先卸载再置空
1 |
|
这个方法只会把资源的引用(item.m_Obj
的引用)置空,但是具体的资源仍然在编辑器中保留。
在编辑器下尽量把代码中引用资源的部分及时置空,因为不管是Resources.UnloadAsset
和Resources.UnloadUnusedAssets();
资源还有引用的话会马上再次读取。
编辑器加载的好处
- 不需要每次运行都去打AB包
- 不同平台AB包(编辑器下,只有加载Windows平台AB包,显示才正常)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ATAO2017,阿宅创造奇迹!!