| | |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using Cysharp.Threading.Tasks; |
| | | using UnityEngine; |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | if (allFrameDic.ContainsKey(cfg.name)) |
| | | return; |
| | | |
| | | List<UniTask> uniTasks = new List<UniTask>(); |
| | | |
| | | List<Sprite> spriteList = new List<Sprite>(); |
| | | |
| | | List<Sprite> spriteList = new List<Sprite>(new Sprite[cfg.frameCnt]); |
| | | for (int i = 1; i <= cfg.frameCnt; i++) |
| | | { |
| | | int index = i; |
| | | string spritePath = "Sprite/" + cfg.folder; |
| | | string spriteName = StringUtility.Concat(cfg.name, "_", i.ToString()); |
| | | |
| | | Sprite sprite = ResManager.Instance.LoadAsset<Sprite>(spritePath, spriteName); |
| | | if (sprite != null) |
| | | |
| | | var task = ResManager.Instance.LoadAssetAsync<Sprite>(spritePath, spriteName).ContinueWith(sprite => |
| | | { |
| | | spriteList.Add(sprite); |
| | | } |
| | | if (sprite != null) |
| | | { |
| | | spriteList[index - 1] = sprite; |
| | | } |
| | | else |
| | | { |
| | | Debug.LogError($"加载帧动画资源失败: {spritePath}/{spriteName}"); |
| | | } |
| | | }); |
| | | |
| | | uniTasks.Add(task); |
| | | } |
| | | |
| | | if (spriteList.Count > 0) |
| | | |
| | | UniTask.WhenAll(uniTasks).ContinueWith(() => |
| | | { |
| | | allFrameDic.Add(cfg.name, spriteList); |
| | | } |
| | | if (this == null) // 检查管理器是否已被销毁 |
| | | return; |
| | | |
| | | if (spriteList.Count > 0) |
| | | { |
| | | allFrameDic.Add(cfg.name, spriteList); |
| | | } |
| | | }).Forget(); |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |