问题描述
使用Unity Sprite2D打包Sprite Atlas,不勾选Include in Build,运行中通过Latebind加载。分析内存发现,所有Sprite2D散图都加载进入了内存,造成严重的内存浪费。
解决方法
Scriptable build pipeline有bug
只要用了sbp,图集打包后总是存在冗余,尝试了各种方式都无法消除。会把散图也全部加载到内存,产生严重内存问题。
只能切换到buildin打包管线。
SpriteRenderer用法问题
项目中使用的SpriteRenderer做了自定义shader,因此美术以此为基础做了一套材质球,最后证明这完全是多此一举,造成了错误的贴图引用引发内存问题。
自定义材质上的贴图选项不要勾选贴图,勾选以后SpriteRenderer引用Sprite2D的同时,又引用到散图的Texture。解决方法:自定义材质上不要勾选任何贴图,在SpriteRenderer中选择正确的Sprite2D即可。
于是制作工具把所有错误的SpriteRenderer都更换为一个自定义材质就OK了。