using UnityEngine; using System; [XLua.LuaCallCSharp] 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 { return m_HeroShader ?? (m_HeroShader = Shader.Find("Character/Character, Emission,Flow_Hero")); } } static Shader playerShader { get { return m_PlayerShader ?? (m_PlayerShader = Shader.Find("Character/Character, Emission,Flow")); } } public static void SwitchXrayShader(Material _material, bool _isHero) { if (_material == null) { return; } if (_isHero) { if (_material.shader.name == "Character/Character, Emission,Flow") { _material.shader = heroShader; _material.SetColor("_XRayColor", new Color32(0, 107, 255, 255)); } } else { if (_material.shader.name == "Character/Character, Emission,Flow_Hero") { _material.shader = playerShader; } } } }