From 1ad03cc2f91d75e80fc3dc42e2ac1fadc9a2bfec Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 11 二月 2026 16:10:43 +0800
Subject: [PATCH] Merge branch 'master' into h5version

---
 Main/ResModule/BuiltInLoader.cs |  126 ++++++++++++++++++++++++++++++++---------
 1 files changed, 97 insertions(+), 29 deletions(-)

diff --git a/Main/ResModule/BuiltInLoader.cs b/Main/ResModule/BuiltInLoader.cs
index 8baa053..2c69c14 100644
--- a/Main/ResModule/BuiltInLoader.cs
+++ b/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
 {
@@ -17,9 +20,9 @@
         if (!AssetSource.isUseAssetBundle)
         {
 #if UNITY_EDITOR
-            if (excludePngs.Contains(StringUtility.Contact(name, SPRITE_EXTENSION)))
+            if (excludePngs.Contains(StringUtility.Concat(name, SPRITE_EXTENSION)))
             {
-                var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/Sprites/", name, SPRITE_EXTENSION);
+                var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Sprites/", name, SPRITE_EXTENSION);
                 path = System.Text.RegularExpressions.Regex.Replace(path, @"[\p{C}]", "");
                 sprite = UnityEditor.AssetDatabase.LoadAssetAtPath<Sprite>(path);
             }
@@ -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
             }
         }
 
@@ -56,14 +59,17 @@
         if (!AssetSource.isUseAssetBundle)
         {
 #if UNITY_EDITOR
-            var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/Prefabs/", name, PREFAB_EXTENSION);
+            var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Prefabs/", name, PREFAB_EXTENSION);
             prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path);
 #endif
         }
         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)
@@ -88,14 +91,17 @@
         if (!AssetSource.isUseAssetBundle)
         {
 #if UNITY_EDITOR
-            var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/Musics/", name, AUDIO_EXTENSION);
+            var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Musics/", name, ".mp3");
             audioClip = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>(path);
 #endif
         }
         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)
@@ -112,14 +118,17 @@
         if (!AssetSource.isUseAssetBundle)
         {
 #if UNITY_EDITOR
-            var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/AnimationClips/", name, ".anim");
+            var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/AnimationClips/", name, ".anim");
             clip = UnityEditor.AssetDatabase.LoadAssetAtPath<AnimationClip>(path);
 #endif
         }
         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)
@@ -136,14 +145,17 @@
         if (!AssetSource.isUseAssetBundle)
         {
 #if UNITY_EDITOR
-            var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/Materials/", name, ".mat");
+            var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Materials/", name, ".mat");
             material = UnityEditor.AssetDatabase.LoadAssetAtPath<Material>(path);
 #endif
         }
         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)
@@ -161,7 +173,7 @@
         if (!AssetSource.isUseAssetBundle)
         {
 #if UNITY_EDITOR
-            var resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
+            var resourcePath = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
                                                    "BuiltIn/ScriptableObjects/", name, ".asset");
 
             config = UnityEditor.AssetDatabase.LoadAssetAtPath<T>(resourcePath);
@@ -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)
@@ -187,15 +203,19 @@
         if (!AssetSource.isUseAssetBundle)
         {
 #if UNITY_EDITOR
-            var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
+            var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
                                        "BuiltIn/Font/", fontName, ".ttf");
             font = UnityEditor.AssetDatabase.LoadAssetAtPath<Font>(path);
 #endif
         }
         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);
+    }
+
 
 }

--
Gitblit v1.8.0