[Unity]记坑:Material材质文件的残留数据

2020/12 10 23:12

为了方便开发人员切换Shader和设置各种属性和纹理,所以Unity在切换Shader后,会保留之前Shader的Keyword、以及TextureProperty
虽然不在面板上显示出来,但内部其实是保留着的

然后:这个材质文件被切过N遍Shader,设置过N次纹理,不断被自定义的ShaderGUI设置过Keyword后,它统统全部保留。

下场:
(1)材质文件带上了 无效的Keyword、冗余的纹理资源
(2)材质偶现失效,表现为粉红、表现异常 等等

解决方法:
1、好办法:写个自定义的脚本,扫描所有Material文件,挖出里面用了哪个Shader,使用了哪些Texture,再删除掉原来所有的Keyword,删除掉不用的Texture属性,再配置好正确的Keyword

2、笨办法:手工打开材质文件,把里面的Keyword都删除,然后手工点开此材质文件的Inspector窗口,切成一个UnlitShader再切回来,刷新保存。