/// <summary> /// Sets material info for gameobjects that have a material to prevent possible future incompatibility /// </summary> protected void UpdateMaterialInfo() { string[] prefabsGUIDs = AssetDatabase.FindAssets("t: prefab"); foreach (string prefabGUID in prefabsGUIDs) { string path = AssetDatabase.GUIDToAssetPath(prefabGUID); GameObject go = AssetDatabase.LoadAssetAtPath <GameObject>(path); if (go == null) { continue; } foreach (Renderer renderer in go.GetComponentsInChildren <Renderer>()) { if (renderer.sharedMaterials != null && renderer.sharedMaterials.Length > 0) { if (renderer.gameObject.GetComponent <KMMaterialInfo>() == null) { renderer.gameObject.AddComponent <KMMaterialInfo>(); } KMMaterialInfo materialInfo = renderer.gameObject.GetComponent <KMMaterialInfo>(); materialInfo.ShaderNames = new List <string>(); foreach (Material material in renderer.sharedMaterials) { materialInfo.ShaderNames.Add(material.shader.name); } } } } }
/// <summary> /// Sets material info for gameobjects that have a material to prevent possible future incompatibility /// </summary> protected void UpdateMaterialInfo() { List <string> supportedShaders = new List <string> { "Legacy Shaders/Diffuse", "Hidden/CubeBlur", "Hidden/CubeCopy", "Hidden/CubeBlend", "UI/Default", "UI/Default Font", "Mobile/Diffuse", "Unlit/Transparent", "Unlit/Transparent Cutout", "Unlit/Color", "Mobile/Unlit (Supports Lightmap)", "Unlit/Texture", "KT/Blend Lit and Unlit", "KT/Blend Lit and Unlit Vertex Color", "KT/Blend Unlit", "GUI/KT 3D Text", "KT/Mobile/Diffuse", "KT/Mobile/DiffuseTint", "KT/Transparent/Mobile Diffuse Underlay200", "KT/Unlit/TexturedLightmap", "KT/Unlit/TransparentVertexColorUnderlay30", "KT/Outline" }; string[] prefabsGUIDs = AssetDatabase.FindAssets("t: prefab"); foreach (string prefabGUID in prefabsGUIDs) { string path = AssetDatabase.GUIDToAssetPath(prefabGUID); GameObject go = AssetDatabase.LoadAssetAtPath <GameObject>(path); if (go == null) { continue; } foreach (Renderer renderer in go.GetComponentsInChildren <Renderer>()) { if (renderer.sharedMaterials != null && renderer.sharedMaterials.Length > 0) { if (renderer.gameObject.GetComponent <KMMaterialInfo>() == null) { renderer.gameObject.AddComponent <KMMaterialInfo>(); } KMMaterialInfo materialInfo = renderer.gameObject.GetComponent <KMMaterialInfo>(); materialInfo.ShaderNames = new List <string>(); foreach (Material material in renderer.sharedMaterials) { if (material == null) { var obj = renderer.transform; var str = new List <string>(); while (obj != null) { str.Add(obj.gameObject.name); obj = obj.parent; } Debug.LogWarningFormat("There is an unassigned material on the following object: {0}", string.Join(" > ", str.ToArray())); continue; } materialInfo.ShaderNames.Add(material.shader.name); if (material.shader.name == "Standard") { Debug.LogWarning(string.Format("Use of Standard shader in object {0}. Standard shader should be avoided as it will cause your mod to break in future versions of the game.", renderer.gameObject)); } else if (!supportedShaders.Contains(material.shader.name)) { Debug.LogWarning(string.Format("Use of custom shader {0} in object {1}. Use of custom shaders will break mod compatibility on game update requiring rebuild. Recommend using only supported shaders.", material.shader.name, renderer.gameObject)); } } } } } }