GameManager を作り、シングルトン と DontDestroyOnLoad も覚えた。AudioManager、SaveManager、QuestManager……便利なので増やしていくと、5個を超えたあたりで様子が変わってきます。Gameシーンから直接再生すると nullで即落ちる(タイトルから再生しないとマネージャーが居ない)。AwakeでManager同士が呼び合い、 実行順のくじ引き で壊れたり直ったりする。タイトルへ戻ると常駐オブジェクトが 2個に増えている。
1個ずつは正しく作ったのに、組み合わせた途端に壊れる——足りないのは個々の作り方ではなく、 全体を組み立てる場所 です。この記事では、常駐するものを最初の Bootstrapシーン で1回だけ・決めた順番で組み立てる形へ、Manager群の土台を作り直します。
この記事でわかること
- マネージャーを増やすほど壊れやすくなる 本当の原因(生成場所と初期化順が散らばる)
- 常駐物を最初のシーンで1回だけ組み立てる Bootstrapシーン の作り方
- Awakeのくじ引きをやめて、 初期化順を1か所に明示する
Initialize()フロー- どのシーンから再生しても動く ようにする
RuntimeInitializeOnLoadMethodの保険
動作 確認環境: Unity 6 (6000.x)
マネージャーが増えるほど壊れる逆説
マネージャーはそれぞれ正しいのに、なぜ増えると壊れるのか。原因は機能ではなく 配置 にあります。よくある構成はこうです——GameManagerはタイトルシーンに、AudioManagerはどのシーンにも念のため置いてあり、SaveManagerはGameシーンだけに居る。それぞれが自分のAwakeで DontDestroyOnLoad し、ついでに他のマネージャーを探して呼ぶ。
