yyl
9 天以前 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96
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
using UnityEngine;
using System;
using Cysharp.Threading.Tasks;
using ProjSG.Resource;
 
 
public static class MaterialUtility
{
    // T044: Materials must be pre-loaded via StartupEssential preload config
    // (location: "Assets/ResourcesOut/BuiltIn/Materials")
 
    public static Material GetDefaultSpriteGrayMaterial()
    {
        return ResourceCacheManager.Instance.GetCached<Material>("Assets/ResourcesOut/BuiltIn/Materials/SpriteGray.mat");
    }
 
    public static Material GetInstantiatedSpriteGrayMaterial()
    {
        var material = new Material(GetDefaultSpriteGrayMaterial());
        return material;
    }
 
    public static Material GetSmoothMaskGrayMaterial()
    {
        return ResourceCacheManager.Instance.GetCached<Material>("Assets/ResourcesOut/BuiltIn/Materials/SmoothMaskGray.mat");
    }
 
    public static Material GetInstantiatedSpriteTwinkleMaterial()
    {
        var material = ResourceCacheManager.Instance.GetCached<Material>("Assets/ResourcesOut/BuiltIn/Materials/Flash.mat");
        return new Material(material);
    }
 
    public static Material GetUIDefaultGraphicMaterial()
    {
        return UnityEngine.UI.Image.defaultGraphicMaterial;
    }
 
    public static Material GetGUIRenderTextureMaterial()
    {
        return ResourceCacheManager.Instance.GetCached<Material>("Assets/ResourcesOut/BuiltIn/Materials/UI_RenderTexture.mat");
    }
 
    // ====================================================================
    // US2: Async variants — temporary API. Replaced by preload+cache in T044.
    // ====================================================================
 
    public static UniTask<Material> GetDefaultSpriteGrayMaterialAsync()
    {
        return ResManager.Instance.LoadAssetAsync<Material>("BuiltIn/Materials", "SpriteGray");
    }
 
    public static UniTask<Material> GetSmoothMaskGrayMaterialAsync()
    {
        return ResManager.Instance.LoadAssetAsync<Material>("BuiltIn/Materials", "SmoothMaskGray");
    }
 
    public static async UniTask<Material> GetInstantiatedSpriteTwinkleMaterialAsync()
    {
        var material = await ResManager.Instance.LoadAssetAsync<Material>("BuiltIn/Materials", "Flash");
        return new Material(material);
    }
 
    public static UniTask<Material> GetGUIRenderTextureMaterialAsync()
    {
        return ResManager.Instance.LoadAssetAsync<Material>("BuiltIn/Materials", "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;
            }
        }
    }
 
 
 
}