mcpField
U
unity-composition-pattern

unity-composition-pattern

github.com/muharremtozan開発1753 回インストール22 週間前に更新
リポジトリ

unity-composition-pattern について

unity-composition-pattern は、継承階層ではなく ScriptableObject の設定を組み合わせてエンティティを構成する Unity の設計スキルです。専用クラスを増やさず、差し替え可能なデータや振る舞いを扱いたい開発者向けです。

主な機能

  1. 01Has-a による構成モデル
  2. 02ScriptableObject から実行時インスタンスを生成
  3. 03Tuple による複数値の返却
  4. 04専用 C# ファイルの削減

活用シーン

  1. 01設定アセットでエンティティの差異を表現
  2. 02ScriptableObject のテンプレートから実行時エンティティを作成
  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 つの汎用クラスに置き換えます。

主な機能

  1. Has-A ロジック:オブジェクトは、基底クラスの型ではなくメンバー(設定)を通じてプロパティを定義します。
  2. SO とランタイムの橋渡し:ScriptableObject を静的なデータテンプレートとして使用し、動的なランタイムインスタンスを生成します。
  3. タプルの分解:C# の ValueTuples を使用して、余分な定型コードを追加せずに複合オブジェクトから複数のデータを返します。
  4. 階層のフラット化:バリエーションをプロジェクトアセットに移すことで、必要な C# ファイルの数を大幅に減らします。

主なファイル(最大 3 個)

  • EntityConfigSO.cs.txt:差し替え可能なデータパケットを作成するための基底クラスです。
  • ModularEntity.cs.txt:1 つ以上の設定を保持する汎用コンテナーです。
  • 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 でそのアイデンティティを変更します。

コメント