using System.Collections; using System.Collections.Generic; using UnityEngine; namespace TcgEngine { [CreateAssetMenu(fileName = "NewRankingData", menuName = "TcgEngine/Rank/RankingData", order = 5)] public class RankingData :ScriptableObject { public string rankName = "青铜"; public PlayerRank rank; public Sprite rankIcon; public string rank_img_path; public static List rank_lisk = new List(); public static void Load(string folder="") { if (rank_lisk.Count == 0) { rank_lisk.AddRange(Resources.LoadAll(folder)); } rank_lisk.Sort((a, b) => a.rank.CompareTo(b.rank)); } /// /// 获取Rank图片,优先使用动态路径 /// public Sprite GetRankImage() { Sprite sprite = null; if (!string.IsNullOrEmpty(rank_img_path)) { sprite = SpriteLoader.Get()?.LoadSprite(rank_img_path); if (sprite != null) { return sprite; } if (rankIcon != null) { Debug.LogWarning($"Rank {rankName} -- 动态加载失败,使用静态Icon -- {rank_img_path}"); return rankIcon; } Debug.LogError($"Rank {rankName} -- 动态路径无效且没有静态Icon -- {rank_img_path}"); return null; } else { Debug.LogWarning($"Rank {rankName} 段位路径为空,使用静态Icon"); return rankIcon; } } public static RankingData Get(PlayerRank pRank) { foreach (RankingData item in GetAll()) { if (item.rank == pRank) { return item; } } return null; } public static List GetAllAvailable() { List validList = new List(); foreach (RankingData item in GetAll()) { if (!string.IsNullOrEmpty(item.rank_img_path) || item.rankIcon != null) { validList.Add(item); } } return validList; } public static List GetAll() { return rank_lisk; } // 当 Inspector 值发生改变时自动调用 private void OnValidate() { Dictionary rankNames = new Dictionary() { { PlayerRank.Bronze, "青铜" }, { PlayerRank.Silver, "白银" }, { PlayerRank.Gold, "黄金" }, { PlayerRank.Platinum, "铂金" }, { PlayerRank.Diamond, "钻石" }, { PlayerRank.King, "王者" } }; if(rankNames.ContainsKey(rank)) rankName = rankNames[rank]; } } }