当我们在unity中使用材质的时候,我们会发现,当这个材质切换到上一个shader的时候,我们那个shader的属性都会保存,包括贴图,在上个项目的优化过程中,我们TA也发现,一个material材质依赖了它没有的属性贴图,这个是unity的自身设计导致,但是如果它依赖了其他的资源,那么就可能造成不必要的资源冗余等问题,简单来说就是寻找一种方法可以将材质中保存的无用属性剔除,在看了UWA学堂中的课程后,看到了他们的思路,自己也进行了测试:
[MenuItem("清理工具/清理无用的材质球属性")]
static void ClearMaterialProperties()
{
UnityEngine.Object[] objs = Selection.GetFiltered(typeof(Material), SelectionMode.DeepAssets);
for(int i=0;i<objs.Length;i++)
{
EditorUtility.DisplayProgressBar("清理中...", objs[i].name, i/objs.Length);
Material mat = objs[i] as Material;
if(mat)
{
SerializedObject psSource = new SerializedObject(mat);
SerializedProperty emissionProperty = psSource.FindProperty("m