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;
|
}
|
}
|
}
|
|
|
|
}
|