47 lines
1.9 KiB
C#
47 lines
1.9 KiB
C#
using UnityEngine;
|
||
using BaseGames.Player;
|
||
|
||
namespace BaseGames.Skills
|
||
{
|
||
/// <summary>
|
||
/// 形态技能数据库(<b>权威源</b>):FormType → 该形态的 3 个技能(1 魂技 + 2 魄技)。
|
||
/// <para>
|
||
/// <see cref="SkillManager"/>(执行)与 FormSkillPanel(展示)读<b>同一份</b>资产,消除数据重复。
|
||
/// 放在 Skills 程序集而非 FormSO:因 BaseGames.Player 不能反向引用 BaseGames.Skills
|
||
/// (Skills→Player 已有依赖,反向会循环),故技能引用不挂 FormSO(见 DesignSpec §06 与 asmdef 约束)。
|
||
/// </para>
|
||
/// 资产:Assets/_Game/Data/Skills/FormSkillDatabase.asset
|
||
/// </summary>
|
||
[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;
|
||
|
||
/// <summary>取指定形态的技能条目;找不到返回 default(三技能均 null)。</summary>
|
||
public Entry GetByType(FormType type)
|
||
{
|
||
if (_entries != null)
|
||
foreach (var e in _entries)
|
||
if (e.formType == type) return e;
|
||
return default;
|
||
}
|
||
}
|
||
}
|