以下是我目前拥有的组件:

  • StatType 枚举,包含4种不同的属性(例如:生命值)
  • StatProfile 资源(我从 ScriptableObject 类创建的自定义资源),包含一个 StatType、最大值和当前(初始)值的结构体
  • StatManager(MonoBehaviour 脚本),包含一个可以通过 Inspector 分配的 StatProfile 属性。StatManager 还包含两个私有 Dictionary,分别存储最大值和当前值。
  • IStatBehavior 接口
  • 实现该接口的行为类,每种属性类型/行为对应一个(例如:HealthBehavior)

现在我困惑的是如何将 StatManager 中的 HealthBehavior 与 Health 属性关联起来。我尝试为 StatBehaviors 创建自定义资源,但由于它实现了接口,字段在 Inspector 中是空白/不可编辑的。我无法添加每个脚本并遍历行为列表,将每个行为与对应的属性关联。有人有见解吗?

更多背景:我选择这种方法(而不是将每个属性行为作为独立组件添加到玩家对象上),是因为我已经有13个脚本组件:移动、跳跃、输入处理、物品收集、能力管理器、(当前)7个能力脚本,以及现在的 StatManager。我已经知道应该将我的能力行为更改为实现接口等方法。但我不想在玩家对象上堆积更多脚本。

我还打算让不同的敌人拥有不同的属性(这意味着不同的 StatProfile),并且每个角色拥有一个 StatManager 作为主要枢纽,似乎是解耦数据与行为的最清晰方法。