2016年12月7日Tweetはじめまして。エンジニアの石井と申します。今回は現在担当プロジェクトで使用しているUnity(ゲームエンジン)用DIフレームワーク、Zenjectを紹介させていただきます。Zenjectとはhttps://github.com/modesttree/ZenjectZenjectはUnity3D向けに作成された、DI(依存性の注入)フレームワークです。Zenjectを使うことでオブジェクト間の依存関係を外部から解決することができます。依存オブジェクトを別の入れ物(コンテナ)に格納しておきコンテナ経由で使うことで、コンストラクタやメソッドの引数で渡していたり、自身でnewしていたり、FindObjectしていた部分をなくすことができます。ZenjectサンプルZenjectを使ってのUIイベント処理の簡単なサンプルを作っていきます。今回はボタンが押された時のイベントを処理するサンプルです。1.インストールAssetStoreからか、https://github.com/modesttree/Zenject/releasesからダウンロードしてUnityのプロジェクトにインポートしてください。2.Contextの作成シーン上にContextを作成します。Contextを選んでください。3.Installerの作成コンテナへの格納(Bind)にZenjectはInstallerというスクリプトを使用します。今回はSingletonとしてオブジェクトをBindしていきます。Componentしてください。※直接SceneContextでも問題ありません。}}4.ContextにInstallerをアタッチContextにInstallerをアタッチすることでInstallerが機能します。SceneContextのInstallersに、作成したInstallerSampleをアタッチしてください。5.UIの作成UIを作成していきます。Componentします。Bindingスクリプトにより、Installerに定義しなくてもBindすることができます。Identifierを使うことで、個別にInjectすることもできます。}}イベントの変換はUniRxを使い、Textをstringで送出します。6.サンプルクラスの作成サンプルクラスを作成します。[Inject]アトリビュートにより先ほど作成したUIViewが注入されます。各ボタンのClickイベント購読し、押されたらOnClickメソッドが呼ばれるようになっています。購読を停止しています。最後にDisposeが呼ばれていることがわかります。依存関係の解決でお困りの方はぜひ一度試してみてください。