From dfe8aab7ddab3560c12bc8b59b246969c5167535 Mon Sep 17 00:00:00 2001 From: yyl <yyl> Date: 星期四, 05 六月 2025 16:04:47 +0800 Subject: [PATCH] 18 子 2D卡牌客户端搭建 / 2D卡牌客户端搭建 --- Main/ResModule/ResManager.cs | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 53 insertions(+), 6 deletions(-) diff --git a/Main/ResModule/ResManager.cs b/Main/ResModule/ResManager.cs index d5f3d4d..3806ee4 100644 --- a/Main/ResModule/ResManager.cs +++ b/Main/ResModule/ResManager.cs @@ -126,7 +126,6 @@ public T LoadAsset<T> (string directory, string name) where T : UnityEngine.Object { T asset = null; - // 鐗规畩澶勭悊 鍥犱负鏈変竴灞傚浘闆嗙殑鍏崇郴 directory瑕佷紶鍏ョ殑搴旇鏄痑tlas鐨勫悕瀛� if (typeof(T) == typeof(Sprite)) { @@ -140,7 +139,7 @@ { T asset = null; - var path = string.Concat($"Assets/ResourcesOut/{directory}/{name}", GetExtension(typeof(T))).Replace("//", "/"); + var path = string.Concat($"Assets/ResourcesOut/{directory}/{name}", GetExtension(typeof(T))).Replace("//", "/").Trim().Replace("\\", "/"); if (AssetSource.uiFromEditor) { @@ -156,7 +155,7 @@ if (asset == null) { - Debug.LogErrorFormat("LoadAsset() => 鍔犺浇涓嶅埌璧勬簮: {0}.", name); + Debug.LogErrorFormat("LoadAsset() => 鍔犺浇涓嶅埌璧勬簮: {0}", path); } return asset; @@ -164,15 +163,63 @@ private Sprite LoadSprite(string atlasName, string spriteName) { -#if !UNITY_EDITOR - SpriteAtlas atlas = LoadAsset<SpriteAtlas>("Sprite", atlasName); +// #if !UNITY_EDITOR + SpriteAtlas atlas = LoadAsset<SpriteAtlas>("Sprite", atlasName.Replace("Sprite/", "")); return atlas.GetSprite(spriteName); +// #else + // return ResManager.Instance.LoadAssetInternal<Sprite>(atlasName, spriteName); +// #endif + } + + public void LoadAssetAsync<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object + { + // 鐗规畩澶勭悊 鍥犱负鏈変竴灞傚浘闆嗙殑鍏崇郴 directory瑕佷紶鍏ョ殑搴旇鏄痑tlas鐨勫悕瀛� + if (typeof(T) == typeof(Sprite)) + { + LoadSpriteAsync<T>(directory, name, callBack); + return; + } + + LoadAssetAsyncInternal<T>(directory, name, callBack); + } + + private void LoadSpriteAsync<T>(string atlasName, string spriteName, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object + { +#if !UNITY_EDITOR + LoadAssetAsync<SpriteAtlas>(atlasName, spriteName, (isLoaded, atlas) => { + if (isLoaded) + { + callBack?.Invoke(isLoaded, atlas.GetSprite(spriteName)); + } + else + { + callBack?.Invoke(false, null); + } + }); #else // 缂栬緫鍣ㄤ笅鍙互鐩存帴鍔犺浇娌″暐闂 - return LoadAssetInternal<Sprite>("Sprite/" + atlasName, spriteName); + LoadAssetAsyncInternal<T>(atlasName, spriteName, callBack); #endif } + private void LoadAssetAsyncInternal<T>(string directory, string name, Action<bool, UnityEngine.Object> callBack) where T : UnityEngine.Object + { + var path = string.Concat($"Assets/ResourcesOut/{directory}/{name}", GetExtension(typeof(T))).Replace("//", "/"); + + if (AssetSource.uiFromEditor) + { +#if UNITY_EDITOR + var asset = UnityEditor.AssetDatabase.LoadAssetAtPath<T>(path); + callBack?.Invoke(asset != null, asset); +#endif + } + else + { + var assetInfo = new AssetInfo(directory.ToLower(), name.ToLower()); + AssetBundleUtility.Instance.Co_LoadAsset(assetInfo, callBack); + } + } + public void UnloadAsset(string assetBundleName, string assetName) { if (AssetSource.uiFromEditor) -- Gitblit v1.8.0