查看: 1376|回复: 1
打印 上一主题 下一主题

[其他] Unity加载方式和加载方式对内存的影响

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52336
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2016-2-29 22:08:24 |只看该作者 |倒序浏览

加载方式有3种:
1.Unity自动打包资源.即Inspector上拉入文件
2.Resources.Load().
3.AssetBundle
想学习Resources和AssetBundle相关内容移步这里.
http://www.manew.com/blog-53680-3296.html

加载方式对内存的影响:
先说一下如何进行手机调试吧.其实就是安装到手机然后打开Profiler窗口检测
手机连上.File>Build Setting 勾上Development Build 然后Build And Run 手机
193606usqtdqabq6d14tbm.png 在Profiler窗口这个地方选择进入就行了.做[color=rgb(85, 85, 85) !important]移动游戏的人必须知道.

测出数据:
Inpspector中放入预设: Inspector中放入预设和没放入预设时候Texture的内存分配并没发生变化,当实例化时Texture才会变高,但总内存放入比没放入的高.也就是Texture是在实例化时候才加载,但大部分内容是先加载.在Destory创建出来的实体后Texture并没有立刻降低,而是过了一段时间才慢慢降低,但是并没有恢复原来的数据,略微高了一点,我调用了Resources.UnloadUnusedAssets()也无法消除,这算是bug么?如果一直累积下来也是不小的内存占用.Inspector中的预设可以用 =null后用Resources.UnloadUnusedAssets(),可以消除缓存.
总结:大部分内容是先加载,Texture是在实例化时候再加载.实例化被Destory后,加载的缓存并不会被清除,必须手动清除或切换场景自动清除.手动清除:Resources.UnloadUnusedAssets()

Resources.Load : Texture的内存变化和上面的一样.总内存在Resources.Load的时候短时间升高,再降低一部分,即加载时会占用内存.实例化时跟上面的一样.
总结:和上面的方法的总结基本一样,除了加粗字体的加载时刻不同.


AssetBundle:和上面2个并不同,他把Texture也一起加载了.

我测试时候,Total GC Allocated 一直不会下降,只有调用System.GC.Collect的时候才会暴跌.谁也不知道什么时候GC什么时候才自动回收内存,所以有机会就手动调用吧.但当回收的内容太多时候就等转换场景时候让他自动回收吧..回收总会占用部分内存的,如果内容太多可能会大量占用内存,然后卡....

清除内存方法:
1.Resources.UnloadAsset和Resources.UnloadUnusedAssets可以用来释放Asset
2.文件内存镜像是通过AssetBundle.Unload(false)来释放的。
3.Instaniate出来的Object内存通过Object.Destory来释放。
4.AssetBundle.Unload(true)不单会释放文件内存镜像,还会释放AssetBundle.Load创建的Assets。这个方法是不安全的,除非你能保证这些Assets没有Object在引用,否则就出[color=rgb(85, 85, 85) !important]问题了。


就这个博客方面的控制内存的方法:
1.要清除缓存的对象少用Resources.Load,因为Texture的缓存无法完全清理.(应该是bug吧?)
2.适当手动调用System.GC.Collect

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

47

主题

2

听众

2810

积分

中级设计师

Rank: 5Rank: 5

纳金币
571
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2016-2-29 22:23:04 |只看该作者
这是针对移动平台的优化吧,像PC游戏,用得着这么精精计较吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-28 22:00 , Processed in 0.099776 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部