From 2f83639bdc8b4b20245eb9d5fb4973df2f63cebb Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 13 六月 2025 10:31:34 +0800
Subject: [PATCH] 18 子 2D卡牌客户端搭建 / 2D卡牌客户端搭建 漏提交的文件
---
Main/ResModule/ResManager.cs | 72 ++++++++++++++++++++++++++++++-----
1 files changed, 61 insertions(+), 11 deletions(-)
diff --git a/Main/ResModule/ResManager.cs b/Main/ResModule/ResManager.cs
index d5f3d4d..b8318cb 100644
--- a/Main/ResModule/ResManager.cs
+++ b/Main/ResModule/ResManager.cs
@@ -1,4 +1,4 @@
-using UnityEngine;
+锘縰sing UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
@@ -8,6 +8,8 @@
using System.IO;
using UnityEngine.Networking;
using UnityEngine.Video;
+using System.Reflection;
+
#if UNITY_EDITOR
@@ -126,7 +128,6 @@
public T LoadAsset<T> (string directory, string name) where T : UnityEngine.Object
{
T asset = null;
-
// 鐗规畩澶勭悊 鍥犱负鏈変竴灞傚浘闆嗙殑鍏崇郴 directory瑕佷紶鍏ョ殑搴旇鏄痑tlas鐨勫悕瀛�
if (typeof(T) == typeof(Sprite))
{
@@ -140,11 +141,12 @@
{
T asset = null;
- var path = string.Concat($"Assets/ResourcesOut/{directory}/{name}", GetExtension(typeof(T))).Replace("//", "/");
-
- if (AssetSource.uiFromEditor)
+ var path = ($"Assets/ResourcesOut/{directory}/{name}" + GetExtension(typeof(T))).Replace("//", "/").Trim().Replace("\\", "/");
+ if (!AssetSource.isUseAssetBundle)
{
#if UNITY_EDITOR
+ // TODO YYL 杩樻槸瑕佹壘鍒板瓧绗︿覆闂
+ path = System.Text.RegularExpressions.Regex.Replace(path, @"[\p{C}]", "");
asset = UnityEditor.AssetDatabase.LoadAssetAtPath<T>(path);
#endif
}
@@ -156,7 +158,7 @@
if (asset == null)
{
- Debug.LogErrorFormat("LoadAsset() => 鍔犺浇涓嶅埌璧勬簮: {0}.", name);
+ Debug.LogErrorFormat("LoadAsset() => 鍔犺浇涓嶅埌璧勬簮: {0}", path);
}
return asset;
@@ -165,17 +167,65 @@
private Sprite LoadSprite(string atlasName, string spriteName)
{
#if !UNITY_EDITOR
- SpriteAtlas atlas = LoadAsset<SpriteAtlas>("Sprite", atlasName);
+ SpriteAtlas atlas = LoadAsset<SpriteAtlas>("Sprite", atlasName.Replace("Sprite/", ""));
return atlas.GetSprite(spriteName);
#else
- // 缂栬緫鍣ㄤ笅鍙互鐩存帴鍔犺浇娌″暐闂
- return LoadAssetInternal<Sprite>("Sprite/" + atlasName, spriteName);
+ 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
+ // 缂栬緫鍣ㄤ笅鍙互鐩存帴鍔犺浇娌″暐闂
+ 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.isUseAssetBundle)
+ {
+#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)
+ if (!AssetSource.isUseAssetBundle)
return;
AssetBundleUtility.Instance.UnloadAsset(assetBundleName, assetName);
@@ -183,7 +233,7 @@
public void UnloadAssetBundle(string assetBundleName, bool unloadAllLoadedObjects, bool includeDependenice)
{
- if (AssetSource.uiFromEditor)
+ if (!AssetSource.isUseAssetBundle)
return;
AssetBundleUtility.Instance.UnloadAssetBundle(assetBundleName, unloadAllLoadedObjects, includeDependenice);
}
--
Gitblit v1.8.0