using System.Collections.Generic; using UnityEngine; namespace TcgEngine { [CreateAssetMenu(fileName = "NewRankMedalData", menuName = "TcgEngine/Rank/RankMedalData", order = 5)] public class RankMedalData : ScriptableObject { public string medalName; public Sprite sprite; public string icon_url; private static List medalList = new List(); /// /// 从 Resources 目录加载所有 RankIconData /// public static void Load(string folder = "") { if (medalList.Count == 0) { medalList.AddRange(Resources.LoadAll(folder)); } } /// /// 获取所有奖牌配置 /// public static List GetAll() { return medalList; } /// /// 根据奖牌名称查找 /// public static RankMedalData Get(string name) { foreach (RankMedalData item in medalList) { if (item.medalName == name) return item; } return null; } /// /// 获取奖牌 Sprite,优先走网络路径(需要配合 SpriteLoader) /// public Sprite GetIcon() { Sprite result = null; if (!string.IsNullOrEmpty(icon_url)) { result = SpriteLoader.Get()?.LoadSprite(icon_url); if (result != null) { return result; } if (sprite != null) { Debug.LogWarning($"奖牌 {medalName} -- 动态加载失败,使用静态Sprite -- {icon_url}"); return sprite; } Debug.LogError($"奖牌 {medalName} -- 动态路径无效且没有静态Sprite -- {icon_url}"); return null; } else { Debug.LogWarning($"奖牌 {medalName} 未配置网络路径,使用静态Sprite"); return sprite; } } } }