【Unity3D】关于内存优化部分的一些记录

关于app经过大量场景资源更新迭代后,一起的卡死闪退等问题的处理,目前定位为内存溢出的现象:

  1. 由于最初都是采用的非动态加载的方式进行的资源加载,目前需要全部调整到动态的资源加载(否则到达一定的加载上限后,就会影响启动崩溃)。

  2. 资源的优化部分:

    1. 贴图的压缩:包括大型贴图的压缩、地形贴图等的压缩、lightmap的压缩等;

    2. 模型的处理:此处主要是针对模型动态创建standard材质的问题规避(有可能为ab包加载导致),导入模型吃material设置为standard,然后location选择UseExternalMaterials,然后将生成的材质球的shader更改为其余替代材质,目前使用custom/standard,后续可考虑更优方案;

    3. 对于粒子系统的统一处理。目前发现在当前版本中(2019.4.18),粒子系统的拖尾设置中,即使不使用拖尾效果,也会在使用ab包加载的过程中动态创建默认的default材质球,而其使用的默认standard材质,消耗是非常大的。

  3. shader的优化:尽量避免使用默认shader,默认shader的变体较多,尤其在移动设备上,这些变体都会经过内存,导致内存疯长。即使使用时也应该先观察变体的数量,一版在100以下为最好,数量越小越好。

  4. 对于unity自带地形的处理。在游戏制作当中,可能美术会引入一些购买的地形资源或者自己刷地形,如果我们的设备是安卓设备、VR设备,极力不推荐使用默认的地形。可以将其转化为普通的mesh,在进行烘焙等处理。这样既能优化shader,又对贴图记性了处理,一举多得。

  5. 一些其他办法:目前在app的测试分析中,发现消耗的大头来源于两个,一个是shaderlab,另外一个是相机贴图的绘制。shaderlab的优化是一个漫长的过程来处理一些旧有的资源(之前制作过的项目资源,还有一些插件中的直接引用带来的问题),而且随着项目的更新可能会制定一些规范来要求美术资源,渐渐的会有所解决。而相机的绘制能够直观的减少内存的占用,但是随之而来的画面质量也就会出现下降,所以需要寻找一个均衡的点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值