unity-composition-pattern について
unity-composition-pattern は、継承階層ではなく ScriptableObject の設定を組み合わせてエンティティを構成する Unity の設計スキルです。専用クラスを増やさず、差し替え可能なデータや振る舞いを扱いたい開発者向けです。
主な機能
- 01Has-a による構成モデル
- 02ScriptableObject から実行時インスタンスを生成
- 03Tuple による複数値の返却
- 04専用 C# ファイルの削減
活用シーン
- 01設定アセットでエンティティの差異を表現
- 02ScriptableObject のテンプレートから実行時エンティティを作成
- 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.txtEntityConfigSO.cs.txtModularEntity.cs.txt詳細
Unity のコンポジションパターン
「継承地獄」を防ぐための基本的な設計スキルです。このパターンでは、10 個の個別クラス(例:RedStone、GoldStone)を、ScriptableObject アセットから振る舞いを組み合わせる 1 つの汎用クラスに置き換えます。
主な機能
- Has-A ロジック:オブジェクトは、基底クラスの型ではなくメンバー(設定)を通じてプロパティを定義します。
- SO とランタイムの橋渡し:ScriptableObject を静的なデータテンプレートとして使用し、動的なランタイムインスタンスを生成します。
- タプルの分解:C# の ValueTuples を使用して、余分な定型コードを追加せずに複合オブジェクトから複数のデータを返します。
- 階層のフラット化:バリエーションをプロジェクトアセットに移すことで、必要な 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 でそのアイデンティティを変更します。
コメント
Markdown 対応