yyl
2025-05-19 b118ece3db250a5a257b60713da92234d8d5a57a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using UnityEngine;
using System;
 
 
public static class MaterialUtility
{
 
    public static Material GetDefaultSpriteGrayMaterial()
    {
        return ResManager.Instance.LoadAsset<Material>("Material", "SpriteGray");
    }
 
    public static Material GetInstantiatedSpriteGrayMaterial()
    {
        var material = new Material(GetDefaultSpriteGrayMaterial());
        return material;
    }
 
    public static Material GetSmoothMaskGrayMaterial()
    {
        return ResManager.Instance.LoadAsset<Material>("Material", "SmoothMaskGray");
    }
 
    public static Material GetInstantiatedSpriteTwinkleMaterial()
    {
        var material = ResManager.Instance.LoadAsset<Material>("Material", "Flash");
        return new Material(material);
    }
 
    public static Material GetUIDefaultGraphicMaterial()
    {
        return UnityEngine.UI.Image.defaultGraphicMaterial;
    }
 
    public static Material GetUIBlurMaterial()
    {
        return ResManager.Instance.LoadAsset<Material>("Material", "GUIBlurMaterial");
    }
 
    public static Material GetGUIRenderTextureMaterial()
    {
        return ResManager.Instance.LoadAsset<Material>("Material", "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<Renderer>();
            for (var i = 0; i < renderers.Length; i++)
            {
                var renderer = renderers[i];
                renderer.sortingOrder = sortingOrder;
            }
        }
        else
        {
            var renderer = root.GetComponent<Renderer>();
            if (renderer != null)
            {
                renderer.sortingOrder = sortingOrder;
            }
        }
 
    }
 
 
 
    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;
            }
        }
    }
 
}