mcpField
U
unity-composition-pattern

unity-composition-pattern

github.com/muharremtozan开发1753 次安装22 周前更新
代码仓库

关于 unity-composition-pattern

unity-composition-pattern 是一种 Unity 设计技能,通过组合 ScriptableObject 配置来定义实体,避免复杂的继承层级。它适合需要用较少专用类管理可替换实体数据与行为的开发者。

主要功能

  1. 01Has-a 组合模型
  2. 02ScriptableObject 转运行时实例
  3. 03基于 Tuple 返回多个值
  4. 04减少专用 C# 文件

适用场景

  1. 01用配置资源表示实体变体
  2. 02从 ScriptableObject 模板创建运行时实体
  3. 03从组合行为返回多个值

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/muharremtozan/unity-agent-skills --skill unity-composition-pattern

安装后在 Claude Code 中输入/unity-composition-pattern确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/code/
CompositionExample.cs.txt
EntityConfigSO.cs.txt
ModularEntity.cs.txt

详细介绍

Unity 组合模式

一种用于避免“继承地狱”的基础设计技巧。此模式用一个通用类替代 10 个特定类(例如 RedStone、GoldStone),并通过 ScriptableObject 资源组合行为。

核心功能

  1. 拥有(Has-A)逻辑:对象通过成员(配置)定义属性,而非通过基类类型定义。
  2. SO 到运行时桥接:使用 ScriptableObject 作为静态数据模板,生成动态运行时实例。
  3. 元组解构:使用 C# ValueTuples 从组合对象返回多部分数据,无需额外样板代码。
  4. 层级扁平化:将差异转移到项目资源中,大幅减少所需的 C# 文件数量。

核心文件(最多 3 个)

  • EntityConfigSO.cs.txt:用于创建可互换数据包的基类。
  • ModularEntity.cs.txt:用于容纳一个或多个配置的通用容器。
  • CompositionExample.cs.txt:通过元组解构演示资源采集。

用法

1. 区分“是(Is-A)”与“拥有(Has-A)”
  • 不佳:ElectricCar : Car : Vehicle(继承)
  • 良好:Vehicle 拥有一个 EngineConfig(组合)
2. 多值返回(元组)

不使用内部状态跟踪:

public (int gold, int weight) Gather() => (10, 5);
// Client destructures instantly:
var (g, w) = node.Gather();
3. 通过 SO 实现策略

将不同的 EntityConfigSO 资源附加到同一个 ModularEntity,即可在 Inspector 中更改其身份。

评论

支持 Markdown