using UnityEngine; using System; public static class MaterialUtility { public static Material GetDefaultSpriteGrayMaterial() { return BuiltInLoader.LoadMaterial("SpriteGray"); } public static Material GetInstantiatedSpriteGrayMaterial() { var material = new Material(GetDefaultSpriteGrayMaterial()); return material; } public static Material GetSmoothMaskGrayMaterial() { return BuiltInLoader.LoadMaterial("SmoothMaskGray"); } public static Material GetInstantiatedSpriteTwinkleMaterial() { var material = BuiltInLoader.LoadMaterial("Flash"); return new Material(material); } public static Material GetUIDefaultGraphicMaterial() { return UnityEngine.UI.Image.defaultGraphicMaterial; } public static Material GetUIBlurMaterial() { return BuiltInLoader.LoadMaterial("GUIBlurMaterial"); } public static Material GetGUIRenderTextureMaterial() { return BuiltInLoader.LoadMaterial("UI_RenderTexture"); } public static void SetRenderSortingOrder(this GameObject root, int sortingOrder, bool includeChildren) { if (root == null) { throw new NullReferenceException(); } if (includeChildren) { var renderers = root.GetComponentsInChildren(); for (var i = 0; i < renderers.Length; i++) { var renderer = renderers[i]; renderer.sortingOrder = sortingOrder; } } else { var renderer = root.GetComponent(); if (renderer != null) { renderer.sortingOrder = sortingOrder; } } } public static Material m_HudMaterial; public static Material hudMaterial { get { if (m_HudMaterial == null) { m_HudMaterial = BuiltInLoader.LoadMaterial("HUD_HeadupName"); m_HudMaterial.SetTexture("_Tex1", FontUtility.preferred.material.mainTexture); } return m_HudMaterial; } } static Shader m_HeroShader; static Shader m_PlayerShader; static Shader heroShader { get { if (m_HeroShader == null) { m_HeroShader = Shader.Find("Character/Character,Emission,Flow_Hero"); } if (m_HeroShader == null) { m_HeroShader = Shader.Find("Character/Character, Emission,Flow_Hero"); } return m_HeroShader; } } static Shader playerShader { get { if (m_PlayerShader == null) { m_PlayerShader = Shader.Find("Character/Character,Emission,Flow"); } if (m_PlayerShader == null) { m_PlayerShader = Shader.Find("Character/Character, Emission,Flow"); } return m_PlayerShader; } } public static void SwitchXrayShader(Material _material, bool _isHero) { if (_material == null) { return; } if (_isHero) { if (_material.shader.name != "Character/Character,Emission,Flow_Hero" && _material.shader.name != "Character/Character, Emission,Flow_Hero") { _material.shader = heroShader; _material.SetColor("_XRayColor", new Color32(0, 107, 255, 255)); } } else { if (_material.shader.name != "Character/Character, Emission,Flow" && _material.shader.name != "Character/Character,Emission,Flow") { _material.shader = playerShader; } } } }