mcpField
U
unity-dependency-injection

unity-dependency-injection

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

unity-dependency-injection について

具象の提供元を意識せず、抽象を通じて依存関係を指定できるUnity向けの依存性注入システムです。Awake時にシーン内の依存関係を結び、提供元がない場合はログに記録します。

主な機能

  1. 01属性ベースの注入
  2. 02インターフェース中心の依存関係
  3. 03Awake時のシーン全体の接続
  4. 04注入状況の診断ログ

活用シーン

  1. 01ゲームプレイクラスと実装の分離
  2. 02Unityシーン内での依存関係の提供

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/muharremtozan/unity-agent-skills --skill unity-dependency-injection

インストール後、Claude Code で/unity-dependency-injectionを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/code/
DependencyInjector.cs.txt
DIAttributes.cs.txt
DIExample.cs.txt

詳細

Unity 依存性注入(DI)

SOLID の「D」を満たすための軽量なシステムです。クラスは、依存関係の提供元を知らなくても、[Inject] を使って依存関係を要求できます。

主な機能

  1. 属性ベースの注入:[Inject] でフィールドを指定し、[Provide] で提供元を定義します。
  2. インターフェース重視:抽象化を前提としたプログラミングを促し、システムを簡単に差し替えられるようにします。
  3. 自動配線:シーン全体への注入は Awake で行われるため、Start の前に依存関係が準備されます。
  4. 診断ログ:注入の成功を記録し、提供元が見つからない場合に警告します。

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

  • DIAttributes.cs.txt:コンパイラー用のマーカー属性を含みます。
  • DependencyInjector.cs.txt:シーン内の依存関係を見つけて接続するエンジンです。
  • DIExample.cs.txt:Hero と AbilitySystem を疎結合にする方法を示します。

使用方法

1. インターフェースを定義する
public interface IWeapon { void Fire(); }
2. 実装を提供する
public class PlasmaRifle : MonoBehaviour, IWeapon {
    [Provide] public IWeapon GetWeapon() => this;
    public void Fire() { /* ... */ }
}
3. クライアントに注入する
public class Player : MonoBehaviour {
    [Inject] private IWeapon currentWeapon;
    void Start() => currentWeapon.Fire();
}
4. セットアップ

シーンまたは永続プレハブに DependencyInjector コンポーネントを配置します。

コメント