MemoryProfiler中Graphics/No Name内存怎么排查

1)MemoryProfiler中Graphics/No Name内存怎么排查
2)通过代码加载出来的Mesh,释放的时候该怎么处理
3)动态解析顶点数据加载出来的Mesh还需要做对象池吗
4)MeshCollider重刷Bound怎么做


这是第410篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

Memory

Q:移动端项目,发现某个场景里内存上升很快、但切场景又能回落回去。在Memory Profiler里看发现是Graphics下面的,怎么排查?Unity版本是2022.3.37。

A:这个我们之前也遇到过,可以看下这个场景是不是用了发射Mesh的粒子?应该是临时生成的网格都造成了内存占用,虽然没有引用,但要在下次场景切换RUUA的时候才自动卸载。

该回答由UWA提供,欢迎大家转至社区交流:
UWA问答 | 游戏开发者互动问答社区 | 侑虎科技


Memory

Q1:请问以下这样的一个通过代码加载出来的Mesh,释放的时候该怎么处理呢?

我现在刷新一下LOD内存就涨一次,一直不释放:

我是直接Destroy的GameObject,我的Mesh和贴图都是读取的本地二进制里的数据解析出来的,请问怎么处理呢?

A1:把Mesh和Texture分别都Destroy。

Q2:这个材质呢?我所有的Mesh都是用的一个Material。

A2:一样,所有New出来的Asset都需要Destroy,你需要管理什么时候不用再Destroy。

Q3:没有顺序要求吗? 是Texture、Material、Mesh、GameObject这样的依次删除?

A3:没有顺序要求。你要管理好使用状况,别还在用就被Destroy就行了。

感谢清泉石上流@UWA问答社区提供了回答


Memory

Q:如果我要做对象池,比如做Mesh的对象池,由于我的Mesh都是动态解析顶点数据加载出来的,对于这种情况做对象池还有意义么?比如我放一个Mesh到对象池里,下次取出来用的时候我肯定要重刷所有顶点的,这个和重新new一个Mesh出来是不是差不多了,请问这个要怎么解决呢?

A:Mesh不需要对象池,GameObject这种如果频繁生成销毁可以做对象池。对象池要求你塞进去的东西和拿出来的是同样的才有意义。

不用的Mesh你可以放到一个列表里面来删除,就是过一段时间还没人用再删,防止摄像机移动回来又要加载。

感谢jump晃悠@UWA问答社区提供了回答


Physics

Q:请问MeshCollider重刷Bound怎么做?不想使用.sharedMesh赋值的方式,我使用SetMinMax但没生效。

针对以上问题,有经验的朋友欢迎转至社区交流:
UWA问答 | 游戏开发者互动问答社区 | 侑虎科技

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值