1.Shader
调试发现ShaderLab占用内存过高,有好几百兆,一般来说二十到五十兆就算顶天了。批量查询了Shader的变体数量,发现有个Shader有1W多个变体。发现原来是从网上找的Shader,能用就行。所以多了许多的冗余关键字。一般来说Shader中每多一个关键字, 变体数量就会翻倍,多一个翻一倍,指数级增长。
解决这个问题后能有效降低ShaderLab的占用内存。
另外一部分就是实际打包中的Shader变体数量,与Editor下预览的数量不一致,打包的数量多于Editor下,发现了很多隐藏的关键字,但是这些关键字没有显式的引用。
比如A shader使用关键字_A,B shader使用关键字_B,材质球C先使用了A shader就会把_A关键字记录在材质球上,之后切换成B shader那么这个材质球C会包含_A,_B两个关键字。
2.String
项目开头使用了许多“我”+“在”+“写博客”之类的字符串拼接,导致了GC和CPU的峰值。改了之后也好了一些。