yyl
2025-06-05 dfe8aab7ddab3560c12bc8b59b246969c5167535
Main/ResModule/ResManager.cs
@@ -126,7 +126,6 @@
    public T LoadAsset<T> (string directory, string name) where T : UnityEngine.Object
    {
        T asset = null;
        //  特殊处理 因为有一层图集的关系 directory要传入的应该是atlas的名字
        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要传入的应该是atlas的名字
        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)