一夜明けて、もやもやしながら仕事を終えて、さて、昨夜の不具合オンパレードの解決を考えよう。
まずは何が起こっているのか確認する。
Game Managerのアタッチが外れまくってるわ・・・
エラーが出まくってるわ。
Game Managerはシングルトン構成にしているのだが、リスタート(シーンのリロード)で、他のオブジェクト達が再生成している様なものだから、アタッチが外れてしまうのだろうか。
ちなみに、シングルトン構成を外してみると、リスタートでアタッチが外れる事はなく、何も不具合は発生しなかった。
だからと言って、シングルトン構成を止めるのは勿体無いので、シーンのリロード時に他のオブジェクトを再セットさせる方法を考えてみた。
GameManagerのStartに、アタッチしたいオブジェクトをGameObject.Findで参照させようとしたが、これはうまくいかなかった。
想定だが、シングルトン構成なので、そもそもGame Managerの再生成がなく、Startが走ることもないのだろう。
ならば、Game Managerに必要なオブジェクトへの参照を再設定するスクリプトを、シーンのリロードで生成される、どれかのオブジェクトにアタッチすれば解決するような気がする。
そう思いながら、あっちこっちのサイトを調べていたら、解決にぴったりの記事があったので、さっきの案ではなく、この方法を試してみる事にした。
今回に関係ない部分は省いてます😆
Startでシーンロード時のイベントに、自分で作成したSceneLoadedメソッドを追加。
SceneLoadedメソッドは、リスタートでシーンのロードが完了した際に実行されるらしいので、ここでGame Managerに再セットしたいオブジェクトをGameObject.Findさせた。
結果、不具合は無事解消!✌️
来週から1週間ほど家に帰れないから、その前にもやもやが解消できて良かった〜〜