【Unity】コードがぐちゃぐちゃになる人へ【C#】

Unity

Unityを使っていると、Update関数が多すぎて
どこで何が動いているのか把握しきれなくなる。

そんなあなたのための記事です。

普段、僕たちが呼んでるUpdate関数は、一体どこから呼ばれているんでしょう。
知ってる人は教えてほしいし、俺は知らない。
その神様クラスが見えないからわからなくなるんだと思います。
では問題です。
どうすれば神様クラスを把握ことが出来るでしょうか。

答えは、新しく神様を作る、です。

こうした考え方は昔からあります。
それをデザインパターンと呼ぶらしいです(昨日知りました

その中でも、Mediatorパターンが今回教えるものに近いです。
どういった考え方かと言うと……、

メディエーター(調停者)パターンの図

それぞれのクラスを呼び出す調停者クラスを用意して、
そこから管理してしまおうという考え方です。

この考え方を、Unityに寄せたものを僕は使っています。

実際にUnityのコードを載せます。

GameManager.cs

ObjectController.cs

使い方

利用するアセットはこれだけです。
まずマテリアルを、赤・緑・青、の三色用意してください。

ヒエラルキー上にはこのように配置してください。
RedCube, GreenCube, BlueCubeの三つは3D ObjectのCubeです。
すべての位置を(0,0,0)に設定でお願いします。

マテリアルを貼り付けて、見た目で違いがわかるようにします。
用意したObjectController.csも貼り付けます。

GameManager.csをGameManagerオブジェクトに貼り付けた後、
それぞれのObjectController.csをGameManager.csに渡します。

お疲れさまでした。
あとは実行するだけで、結果が見られると思います。

肝はint型のstepとnext_stepを用意してあるところです。
next_stepの値をstepにコピーするというのがとても大事で、
それにより安全な形で更新されるようにしてあります。

next_stepが-1以外のときに、初期化の処理を行います。

更新したいObjectControllerのupdate(Uは小文字)だけを
呼び出すので、このほうが無駄なUpdate関数も減らせるはずです。

一か所で管理することで、比較的わかりやすく、
さらにパーツごとにわけて考えやすくもなっているはず……。
デバッグもしやすいので個人的にはオススメの形です。

ここまでお付き合いいただきありがとうございました。

コメント

タイトルとURLをコピーしました