using UnityEngine; using BaseGames.Player; namespace BaseGames.Skills { /// /// 形态技能数据库(权威源):FormType → 该形态的 3 个技能(1 魂技 + 2 魄技)。 /// /// (执行)与 FormSkillPanel(展示)读同一份资产,消除数据重复。 /// 放在 Skills 程序集而非 FormSO:因 BaseGames.Player 不能反向引用 BaseGames.Skills /// (Skills→Player 已有依赖,反向会循环),故技能引用不挂 FormSO(见 DesignSpec §06 与 asmdef 约束)。 /// /// 资产:Assets/_Game/Data/Skills/FormSkillDatabase.asset /// [CreateAssetMenu(menuName = "BaseGames/Skills/Form Skill Database", fileName = "FormSkillDatabase")] public class FormSkillDatabaseSO : ScriptableObject { [System.Serializable] public struct Entry { [Tooltip("此条目对应的形态。")] public FormType formType; [Tooltip("形态标题的本地化 Key(UI 表,如 FORM_TIANHUN)。供 FormSkillPanel 显示形态名。")] public string formLabelKey; [Tooltip("魂技(消耗灵力 / SoulPower)。")] public FormSkillSO soulSkill; [Tooltip("魄技 1(消耗魄元 / SpiritPower)。")] public FormSkillSO spiritSkill1; [Tooltip("魄技 2。")] public FormSkillSO spiritSkill2; } [SerializeField] private Entry[] _entries; public Entry[] Entries => _entries; /// 取指定形态的技能条目;找不到返回 default(三技能均 null)。 public Entry GetByType(FormType type) { if (_entries != null) foreach (var e in _entries) if (e.formType == type) return e; return default; } } }