文章出自:http://www.onevcat.com/2012/11/memory-in-unity3d/
文章是欢迎大家转载的。
读书笔记:
1. 减少程序内存 -减少打包时的引用库,改一改build
这个我没优化过,不知道能够省略.net里面的哪些库,省略Sysytem.Xml
用第三方的xml读取 这个我是用过的。应该能减少好几M的内存。
2.托管堆优化 - 这个主要是性能问题,为了性能和短时间产生的内存容量,应该把预计使用到的对象存起来反复用.
尽量减少对GameObject的Instantiate()和Destroy()调用
我在创建极大地图,局部加载地图元件的时候肯定是遇到这个问题了的,而且我的方法就是,当元件在显示区域时,就生成,离开显示区域时,就销毁
遇到了大量Instantiate()和Destroy() 的情况。
如果可以,对一些重复性资源,创建数量充足可用的gameObject对象,对他们只是进行一个显示到界面上,从界面上隐藏的操作。能减少大量创建和销毁的顿卡情况。
3.本机堆优化
1. 减少Hierarchy对资源的直接引用,而是使用Resource.Load的方法。
这个我没问题,平时就是经常调用Resource.load()的,但问题是我却很少使用Resource.UnloadAsset()和Resources.UnloadUnusedAssets()尽快将其卸载掉。
2.DontDestroyOnLoad的使用要谨慎,使用它之后就算场景切换,DontDestroyOnLoad的东西相关的东西也不会被destroy