项目优化之——内存

本文探讨了Unity项目的内存优化,重点关注资源内存占用、引擎模块内存和托管堆内存。资源冗余问题包括AssetBundle打包机制和资源实例化,解决方法包括合理管理AssetBundle和减少静态变量引用。此外,文章还提到了避免频繁的内存分配、优化字符串操作和减少Log输出以降低Mono堆内存开销。最后,提出了内存分配的经验值,如纹理、网格、动画、音频和Mono堆内存的合理分配比例。
摘要由CSDN通过智能技术生成

内存优化主要从以下几个方面入手:

1.资源内存占用;2.引擎模块自身内存占用;3.托管堆内存占用。


一、资源内存占用

1、资源冗余:

什么时候会出现内存冗余:在通过AssetBundle.Unload(false)卸载AssetBundle对象后,如果重新创建该对象并加载之前加载过的资源到内存时,会出现冗余,即两份相同的资源。

被脚本的静态变量引用的资源,在调用Resources.UnloadUnusedAssets时,并不会被卸载

资源冗余

一、AssetBundle打包机制出现问题

 同一份资源被打入到多份AssetBundle文件中

二、资源的实例化所致

 

一般情况下,资源属性的改变情况都是固定的,并非随机出现。比如,假设GameObject受到攻击时,其Material属性改变随攻击类型的不同而有三种不同的参数设置。那么,对于这种需求,我们建议你直接制作三种不同的Material,在Runtime情况下通过代码直接替换对应GameObject的Material,而非改变其Material的属性。这样,你会发现,成百上千的instance Material在内存中消失了,取而代之的,则是这三个不同的Material资源。其中的益处,对于能够阅读到这里的你来说,应该已经不需要我多说了。:)



ManagedHeap.UsedSize  优化:

该项为项目逻辑代码在运行时申请的堆内存,,一般优化方法为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值