using UnityEngine; namespace BaseGames.UI { /// /// 图鉴数据表(策划单表编辑,仿 )。每条目对应一个敌人, /// 以 enemyIdEnemyBase._enemyId 关联。自包含显示数据(名/图标/描述), /// 不引用敌人程序集(BaseGames.UI 不依赖 BaseGames.Enemies,故显示数据放此处)。 /// 改本表即增删 / 重排敌人条目、改名/图标,零代码。 /// [CreateAssetMenu(menuName = "BaseGames/UI/Bestiary Database", fileName = "UI_BestiaryDatabase")] public class BestiaryDatabaseSO : ScriptableObject { public enum Tier { Normal, Elite, Boss } [System.Serializable] public struct Entry { [Tooltip("敌人唯一 ID,须与 EnemyBase._enemyId 一致(如 Enemy_SpiderGuard)。解锁靠此 id 匹配。")] public string enemyId; [Tooltip("敌人名本地化 Key(UI 表,如 ENM_E001_NAME)。")] public string displayNameKey; [Tooltip("敌人描述 / 背景本地化 Key(可空)。")] public string descKey; [Tooltip("敌人肖像(可空)。")] public Sprite icon; [Tooltip("分级(普通 / 精英 / Boss),用于分类与排序。")] public Tier tier; [Tooltip("所属区域 ID(可空,用于筛选)。")] public string region; [Tooltip("解锁完整词条所需累计击杀数(<=1 即首杀全解锁)。")] public int fullLoreKillCount; [Tooltip("展示用最大生命(策划手填;0 = 不显示)。")] public int displayMaxHP; } [SerializeField] private Entry[] _entries; public Entry[] Entries => _entries; } }