最終更新:
orika_ex_miyako 2023年03月27日(月) 21:43:18履歴
DI コンテナとは、UnityでC#を使って開発を行う際に、依存性の注入(Dependency Injection: DI)を行うための仕組みを提供するコンテナのことです。
依存性の注入とは、オブジェクト指向プログラミングにおいて、クラスやオブジェクトの依存関係を解決するデザインパターンの1つです。
DIコンテナは、依存関係のあるオブジェクトを自動的に生成し、適切な状態で提供する役割を果たします。
依存性の注入という言葉で考えるとイメージすることが難しいため、
プログラムのパーツ(クラスやオブジェクト)がお互いにうまく協力しながら動くように、
関係を整理してくれる役割を果たす、と考えておくとよいです。
これにより、コードがきれいでメンテナンスしやすくなります。
VContainer(ブイ・コンテナ)は、Unity向けの軽量なC# DIコンテナの1つで、高速で拡張性に優れています。
VContainerは、依存性の解決を行うために、コンポーネントやサービスのライフタイム管理を提供します。
また、アセンブリ定義やジェネリック型のサポートなど、Unityとの親和性が高い特徴があります。
このため、Unityプロジェクトでの開発を効率化するために利用されることが多いです。
VContainer
Qiita @sakano 様VContainer入門
note アップフロンティア株式会社 様
VContainer入門 – MVPパターンを組んでみる
以下は VContainer とインターフェースを利用して、ゲームの初期化処理を行う際の実装例です。
上記のコードでは、IInitializableインターフェースを実装したクラスをVContainerで自動的に取得し、Start関数内でInitialize関数を順次呼び出しています。
GameInitializerには、インスペクター上でInject属性を付けることで、
ゲーム開始時にVContainerがIInitializableを実装したクラスを自動的に取得し、initializablesに格納します。
その後、foreach文を使ってinitializables内の全てのオブジェクトに対してInitialize関数を呼び出し、ゲームの初期化処理を行っています。




このページへのコメント
確かに、日本は元祖ゲームの国なので、こんないい情報が共有されているので、すごいなと感じます。 韓国とは違った感じの教育を受けるというか。
私は韓国、中国、日本、英米圏全てを回りながら情報を収集するIndie Gameの開発者です。
まだゲームを出したことはありません。
でも努力はしています。
確かにこうして3国を回りながら感じるのは、日本のほうが最新のゲーム技術の共有が盛んだということです。 韓国のゲームの方は企業に入らないと全然共有されないんですけどね。
特に韓国のIndieゲーム開発はお互いにとても攻撃的なので(どうしても競争的です)
個人的にはZenjectを書きますが、このように基礎的な説明があるので、より簡単に理解できるとしましょうか
私の場合は主に中国のCSDNブログ関連で文を検索して見るのですが、日本の方もやはりすごいと感じます。 それに対して韓国の方は基本的にこうした情報を得るには無料共有ではなく有料講座なのですが、ほとんどModularizationに関する情報がない初心者講義がほとんどなのですが、ここは私のような初心者でも理解しやすくとても助かります。
P.s)個人的に不便な点を申し上げてもいいですか? このWIKIは、最近アップデートされたページと最新のコメントが表示されないため、比較的確認が難しいです。
特に苦労して返事をくださったんですが、私には返事が全然来なくて、返事した内容を他の所でやっと見つけました(UniRX関連)
https://srtdog64.hatenablog.com/