かりんちゃんの随心遊戯日誌

ゲームの日記、たまに政治の話、香港の話

UnityにDI…

シェーダーやら雲やら色々と研究して実装したら、アプリがかなり形になってきた。そしてここに来て別の問題が浮かび上がる。

 

依存関係がごちゃごちゃになり始めた

 

奇しくも、本当に運命なのかどうか知らないけど、バイブルではZenjectのとこまで読んできた。そう、まさに依存関係を解消するDIフレームワークの話です。

 

元々やってたC#のNET APIでもDIを使ってたが、あれはそもそもAPIに組まれたものなので、特に意識することもなくそのまま使ってた。しかし、UnityでもDIというのは、正直最初はちょっと予想外だった。

もちろん、そこまで巨大でもないから、既存のMonoBehaviourであちこちくっつけて開発することは可能だが、一部の設定変数が色んなところも使ってるので、あちこちくっつけるのはどうも気に入らん。

そのきっかけでDIを調べ始めた。

 

が、すぐ折れた…

最初からDIを想定したら良いが、今更アプリをDIフレームワーク化にするのは骨が折れる仕事…そもそも発想が根本的に違うから、ベースから作り直さないと導入は難しいという話。

だから諦めるか、と言われてもそうでもない…とりあえず色々と探し続けると、Zenjectよりも、VContainerにたどり着いた。

 

こっちでははるか軽量的で、サポートも未だにしっかりしている。何より、DI設計からみると外道ではあるが、既存のものをある程度DIに対応しつつ、変動も小さいから対応はかなり楽のようです。

最終的にDI設計に沿うものに変更する予定かもしれないが、現状はまず設定やよく使われているClassなどをInjectして、元々の挙動と変わらない、エラーが出ないように実装する。

そこから一個一個コンポーネントの作り方を見直す方針。

 

そもそもまだまだ開発は継続中です、いま全体的に作り変えるのは無理です。ただ将来APIなど色々なものが出てくると、このままでは依存関係がめちゃくちゃになるのはほぼ確実。だから今からある程度DI化にしておきたい。

 

お陰でFF7R2の体験版はまだやってない