用途:该技能用于在 Unity 中实现“组合优于继承”的设计模式,避免“继承地狱”。它把 RedStone、GoldStone 等大量具体子类替换为一个通用类,通过组合 ScriptableObject 资产来定义行为。
主要能力:
- Has-A 逻辑:对象通过成员(Configs)而非基类类型定义自身属性。
- SO 到运行时桥接:以 ScriptableObject 作为静态数据模板,生成动态运行时实例。
- 元组解构:用 C# ValueTuple 从组合对象返回多部分数据,无需额外样板代码。
- 层级扁平化:把差异下放到项目资产,大幅减少所需 C# 文件数量。
核心文件(最多 3 个): EntityConfigSO.cs.txt:创建可互换数据包的基类。 ModularEntity.cs.txt:持有一个或多个配置的通用容器。 CompositionExample.cs.txt:演示带元组解构的资源采集。
使用方式:
- 区分 Is-A 与 Has-A。反例:ElectricCar : Car : Vehicle(继承);正例:Vehicle has an EngineConfig(组合)。
- 多值返回(元组)。示例:public (int gold, int weight) Gather() => (10, 5); 调用方 var (g, w) = node.Gather();
- 通过 SO 实现策略:给同一个 ModularEntity 挂载不同的 EntityConfigSO 资产,即可在 Inspector 中改变其身份。
适用场景:Unity 项目中存在大量仅数据或行为略有差异的同类对象,希望减少类层级与文件数量时。
限制:资料未提供具体安装命令、依赖版本、收费信息或性能数据,暂未提供。