From 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 11 五月 2026 16:20:37 +0800
Subject: [PATCH] Merge branch 'master' into h5version

---
 Main/ResModule/BuiltInLoader.cs |  203 +++++++-------------------------------------------
 1 files changed, 31 insertions(+), 172 deletions(-)

diff --git a/Main/ResModule/BuiltInLoader.cs b/Main/ResModule/BuiltInLoader.cs
index f39c7c1..98aee23 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
 {
@@ -11,199 +14,55 @@
 
     readonly static List<string> excludePngs = new List<string>() { "Launch_1.png", "Launch_2.png", "Launch_3.png", "LoginBackGround.png", "TB_DL_Logo.png" };
 
-    public static Sprite LoadSprite(string name)
+    // ...existing code...
+
+    public static async UniTask<Sprite> LoadSpriteAsync(string name, CancellationToken ct = default)
     {
-        Sprite sprite = null;
-        if (!AssetSource.isUseAssetBundle)
-        {
-#if UNITY_EDITOR
-            if (excludePngs.Contains(StringUtility.Concat(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);
-            }
-            else
-            {
-                var spriteAtlas = UnityEditor.AssetDatabase.LoadAssetAtPath<SpriteAtlas>("Assets/ResourcesOut/BuiltIn/Sprites/sprites.spriteatlasv2");
-                sprite = spriteAtlas.GetSprite(name);
-            }
-#endif
-        }
-        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;
-            }
-        }
-
+        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Sprites/", name, SPRITE_EXTENSION);
+        var sprite = await YooAssetService.Instance.LoadAssetAsync<Sprite>(path, ct: ct);
+#if UNITY_WEBGL
         if (sprite == null)
-        {
-            Debug.LogErrorFormat("BuiltInLoader.LoadSprite() => 鍔犺浇涓嶅埌璧勬簮: {0}.", name);
-        }
-
+            Debug.LogWarning($"[BuiltInLoader][WebGL-Diag] Sprite load returned NULL: path={path}");
+#endif
         return sprite;
     }
 
-    public static GameObject LoadPrefab(string name)
+    public static async UniTask<GameObject> LoadPrefabAsync(string name, CancellationToken ct = default)
     {
-        GameObject prefab = null;
-        if (!AssetSource.isUseAssetBundle)
-        {
-#if UNITY_EDITOR
-            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;
-        }
-
-        if (prefab == null)
-        {
-            Debug.LogErrorFormat("BuiltInLoader.LoadPrefab() => 鍔犺浇涓嶅埌璧勬簮: {0}.", name);
-        }
-
-        return prefab;
+        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Prefabs/", name, PREFAB_EXTENSION);
+        return await YooAssetService.Instance.LoadAssetAsync<GameObject>(path, ct: ct);
     }
 
-    public static void UnLoadPrefab(string name)
+    public static async UniTask<AudioClip> LoadMusicAsync(string name, CancellationToken ct = default)
     {
-        if (AssetSource.isUseAssetBundle)
-        {
-            AssetBundleUtility.Instance.UnloadAsset("builtin/prefabs", name);
-        }
+        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Musics/", name, ".mp3");
+        return await YooAssetService.Instance.LoadAssetAsync<AudioClip>(path, ct: ct);
     }
 
-    public static AudioClip LoadMusic(string name)
+    public static async UniTask<AnimationClip> LoadAnimationClipAsync(string name, CancellationToken ct = default)
     {
-        AudioClip audioClip = null;
-        if (!AssetSource.isUseAssetBundle)
-        {
-#if UNITY_EDITOR
-            var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Musics/", name, AUDIO_EXTENSION);
-            audioClip = UnityEditor.AssetDatabase.LoadAssetAtPath<AudioClip>(path);
-#endif
-        }
-        else
-        {
-            var assetInfo = new AssetInfo("builtin/musics", name);
-            audioClip = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as AudioClip;
-        }
-
-        if (audioClip == null)
-        {
-            Debug.LogErrorFormat("BuiltInLoader.LoadMusic() => 鍔犺浇涓嶅埌璧勬簮: {0}.", name);
-        }
-
-        return audioClip;
+        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/AnimationClips/", name, ".anim");
+        return await YooAssetService.Instance.LoadAssetAsync<AnimationClip>(path, ct: ct);
     }
 
-    public static AnimationClip LoadAnimationClip(string name)
+    public static async UniTask<Material> LoadMaterialAsync(string name, CancellationToken ct = default)
     {
-        AnimationClip clip = null;
-        if (!AssetSource.isUseAssetBundle)
-        {
-#if UNITY_EDITOR
-            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;
-        }
-
-        if (clip == null)
-        {
-            Debug.LogErrorFormat("BuiltInLoader.LoadAnimationClip() => 鍔犺浇涓嶅埌璧勬簮: {0}.", name);
-        }
-
-        return clip;
+        var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Materials/", name, ".mat");
+        return await YooAssetService.Instance.LoadAssetAsync<Material>(path, ct: ct);
     }
 
-    public static Material LoadMaterial(string name)
+    public static async UniTask<T> LoadScriptableObjectAsync<T>(string name, CancellationToken ct = default) where T : ScriptableObject
     {
-        Material material = null;
-        if (!AssetSource.isUseAssetBundle)
-        {
-#if UNITY_EDITOR
-            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;
-        }
-
-        if (material == null)
-        {
-            Debug.LogErrorFormat("BuiltInLoader.LoadMaterial() => 鍔犺浇涓嶅埌璧勬簮: {0}.", name);
-        }
-
-        return material;
+        var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
+                                       "BuiltIn/ScriptableObjects/", name, ".asset");
+        return await YooAssetService.Instance.LoadAssetAsync<T>(path, ct: ct);
     }
 
-    public static T LoadScriptableObject<T>(string name) where T : ScriptableObject
+    public static async UniTask<Font> LoadFontAsync(string fontName, CancellationToken ct = default)
     {
-
-        T config = null;
-        if (!AssetSource.isUseAssetBundle)
-        {
-#if UNITY_EDITOR
-            var resourcePath = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
-                                                   "BuiltIn/ScriptableObjects/", name, ".asset");
-
-            config = UnityEditor.AssetDatabase.LoadAssetAtPath<T>(resourcePath);
-#endif
-        }
-        else
-        {
-            var assetInfo = new AssetInfo("builtin/scriptableobjects", name);
-            config = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as T;
-        }
-
-        if (config == null)
-        {
-            Debug.LogErrorFormat("BuiltIn.LoadScriptableObject() => 鍔犺浇涓嶅埌璧勬簮: {0}.", name);
-        }
-
-        return config;
-    }
-
-    public static Font LoadFont(string fontName)
-    {
-        Font font = null;
-        if (!AssetSource.isUseAssetBundle)
-        {
-#if UNITY_EDITOR
-            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;
-        }
-
-        if (font == null)
-        {
-            Debug.LogErrorFormat("BuiltInLoader.LoadFont() => 鍔犺浇涓嶅埌璧勬簮: {0}.", fontName);
-        }
-
-        return font;
+        var path = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
+                                       "Font/", fontName, ".ttf");
+        return await YooAssetService.Instance.LoadAssetAsync<Font>(path, ct: ct);
     }
 
 

--
Gitblit v1.8.0