yyl
2026-02-11 3f2cd27c5dfb3b450245bf1a37fc1b3414031c7c
Main/ResModule/BuiltInLoader.cs
@@ -2,6 +2,9 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.U2D;
using Cysharp.Threading.Tasks;
using System.Threading;
using ProjSG.Resource;
public class BuiltInLoader
{
@@ -32,13 +35,13 @@
        }
        else
        {
            //var assetInfo = new AssetInfo("builtin/sprites", "sprites");
            //var spriteAtlas = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo, typeof(SpriteAtlas)) as SpriteAtlas;
            //sprite = spriteAtlas?.GetSprite(name);
            //if (sprite == null)
            {
                var assetInfo = new AssetInfo("builtin/sprites", name);
                sprite = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo, typeof(Sprite)) as Sprite;
                // US1: Route through YooAssetService sync wrapper
                var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Sprites/", name, SPRITE_EXTENSION);
                #pragma warning disable CS0612
                sprite = YooAssetService.Instance.LoadAssetSync<Sprite>(path);
                #pragma warning restore CS0612
            }
        }
@@ -62,8 +65,11 @@
        }
        else
        {
            var assetInfo = new AssetInfo("builtin/prefabs", name);
            prefab = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as GameObject;
            // US1: Route through YooAssetService sync wrapper
            var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Prefabs/", name, PREFAB_EXTENSION);
            #pragma warning disable CS0612
            prefab = YooAssetService.Instance.LoadAssetSync<GameObject>(path);
            #pragma warning restore CS0612
        }
        if (prefab == null)
@@ -76,10 +82,7 @@
    public static void UnLoadPrefab(string name)
    {
        if (AssetSource.isUseAssetBundle)
        {
            AssetBundleUtility.Instance.UnloadAsset("builtin/prefabs", name);
        }
        // US1: No-op. YooAsset manages asset lifecycle via handle-based release.
    }
    public static AudioClip LoadMusic(string name)
@@ -94,8 +97,11 @@
        }
        else
        {
            var assetInfo = new AssetInfo("builtin/musics", name);
            audioClip = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as AudioClip;
            // US1: Route through YooAssetService sync wrapper
            var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Musics/", name, ".mp3");
            #pragma warning disable CS0612
            audioClip = YooAssetService.Instance.LoadAssetSync<AudioClip>(path);
            #pragma warning restore CS0612
        }
        if (audioClip == null)
@@ -118,8 +124,11 @@
        }
        else
        {
            var assetInfo = new AssetInfo("builtin/animationclips", name);
            clip = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as AnimationClip;
            // US1: Route through YooAssetService sync wrapper
            var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/AnimationClips/", name, ".anim");
            #pragma warning disable CS0612
            clip = YooAssetService.Instance.LoadAssetSync<AnimationClip>(path);
            #pragma warning restore CS0612
        }
        if (clip == null)
@@ -142,8 +151,11 @@
        }
        else
        {
            var assetInfo = new AssetInfo("builtin/materials", name);
            material = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as Material;
            // US1: Route through YooAssetService sync wrapper
            var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Materials/", name, ".mat");
            #pragma warning disable CS0612
            material = YooAssetService.Instance.LoadAssetSync<Material>(path);
            #pragma warning restore CS0612
        }
        if (material == null)
@@ -169,8 +181,12 @@
        }
        else
        {
            var assetInfo = new AssetInfo("builtin/scriptableobjects", name);
            config = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as T;
            // US1: Route through YooAssetService sync wrapper
            var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
                                           "BuiltIn/ScriptableObjects/", name, ".asset");
            #pragma warning disable CS0612
            config = YooAssetService.Instance.LoadAssetSync<T>(path);
            #pragma warning restore CS0612
        }
        if (config == null)
@@ -194,8 +210,12 @@
        }
        else
        {
            var assetInfo = new AssetInfo("builtin/font", fontName);
            font = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo, typeof(Font)) as Font;
            // US1: Route through YooAssetService sync wrapper
            var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
                                       "BuiltIn/Font/", fontName, ".ttf");
            #pragma warning disable CS0612
            font = YooAssetService.Instance.LoadAssetSync<Font>(path);
            #pragma warning restore CS0612
        }
        if (font == null)
@@ -206,5 +226,53 @@
        return font;
    }
    // ====================================================================
    // US2: Async UniTask variants
    // ====================================================================
    public static async UniTask<Sprite> LoadSpriteAsync(string name, CancellationToken ct = default)
    {
        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Sprites/", name, SPRITE_EXTENSION);
        return await YooAssetService.Instance.LoadAssetAsync<Sprite>(path, ct: ct);
    }
    public static async UniTask<GameObject> LoadPrefabAsync(string name, CancellationToken ct = default)
    {
        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Prefabs/", name, PREFAB_EXTENSION);
        return await YooAssetService.Instance.LoadAssetAsync<GameObject>(path, ct: ct);
    }
    public static async UniTask<AudioClip> LoadMusicAsync(string name, CancellationToken ct = default)
    {
        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Musics/", name, ".mp3");
        return await YooAssetService.Instance.LoadAssetAsync<AudioClip>(path, ct: ct);
    }
    public static async UniTask<AnimationClip> LoadAnimationClipAsync(string name, CancellationToken ct = default)
    {
        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/AnimationClips/", name, ".anim");
        return await YooAssetService.Instance.LoadAssetAsync<AnimationClip>(path, ct: ct);
    }
    public static async UniTask<Material> LoadMaterialAsync(string name, CancellationToken ct = default)
    {
        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Materials/", name, ".mat");
        return await YooAssetService.Instance.LoadAssetAsync<Material>(path, ct: ct);
    }
    public static async UniTask<T> LoadScriptableObjectAsync<T>(string name, CancellationToken ct = default) where T : ScriptableObject
    {
        var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
                                       "BuiltIn/ScriptableObjects/", name, ".asset");
        return await YooAssetService.Instance.LoadAssetAsync<T>(path, ct: ct);
    }
    public static async UniTask<Font> LoadFontAsync(string fontName, CancellationToken ct = default)
    {
        var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
                                       "BuiltIn/Font/", fontName, ".ttf");
        return await YooAssetService.Instance.LoadAssetAsync<Font>(path, ct: ct);
    }
}