見出し画像

ゲーム開発ログ #209 Unity:Scene移動の時だけ警告表示が出た話

Unityでカジュアルゲームを作っています。

今回は、
Scene単体では出ず、Sceneを移動してそのSceneを再生すると警告が出た話です。

自分用メモとして残しておきます。


直面した問題

  • Scene間をまたいでの初期化処理などの改修を行っていた

  • 不具合を調査中に警告が大量に出ていることに気づいた

  • 調査中の不具合とは無関係そうだったが、気になったので調べてみることにした


調べてわかったこと

SceneAからSceneBに処理を受け渡す部分を行っていた際、出ていた警告は、初めSceneB内で出ていると思いました。そのため、SceneBのみ起動させると、その警告は出ていませんでした。

次に、SceneAからSceneBに移行するどこかに原因があるかと思い、追跡すると特定のコードにたどり着きましたが、このコードはUnityでSceneを移動するときに使うようなものだったので、この中で問題が起きているとは考えにくい状況でした。

警告の内容は、簡単に説明すると特定のObjectに設定されているスクリプトが見つからないというものでしたが、そのObject名で検索してもSceneA、SceneBともにそのような物はなく、プロジェクト内やコードにも検索をかけましたが見つけられませんでした。

また、SceneAからテスト用のほぼ空に近いSceneCに試しに移行させてみるとその警告は出ませんでした。このことからSceneBに警告を出している原因はあることはほぼ間違いないと思いました。


最終的な対処

結局、追跡が行き詰ってしまったので、いつもながら原始的な方法を取ることにしました。
具体的には、SceneBをコピーしたSceneB1をつくり、オブジェクトを削っていくことにしました。

すると、特定のObjectを消すと警告が出ないことが分かりました。そのObjectは、今回の開発前に開発を途中でやめた残りで、現在は一切使っていないものだったため、削除することにしました。

ただ、このオブジェクトにはとても大きな容量のPrefabが設定されており、そのPrefabが今回の警告に関係していたようでした。
Prefabの中に警告に表示されたObjectを直接確認することはできませんでしたが、コードも古く、現在使用していないObjectでもあったため、今回は削除して警告が出ないことを確認し、解決としました。


気づき(自分用メモ)

  • Scene単体では出なくても、Sceneを経由することで表示される警告もある

  • 見覚えのない警告は無視せず、調査することで思わぬミスに気づけることもある

  • 警告文の指定対象がSceneやProject内にない場合は、Prefab内など別の場所に問題がある可能性がある


まとめ

  • 今回は、たまたま不可解な警告を見つけたことで、調査することになったが貴重な発見ができた

  • 警告の内容よりもそれの元となるPrefabが容量的に大きなものだったので削除できてよかった

  • これからも気になる警告は、放置せず、その都度調査していこうと思う

※あくまで自分用のメモです。勘違いや不正確な部分が含まれる可能性があります。
※日々の作業を書いているため過去の内容と酷似する場合があります。


次にやること

  • 引き続きSceneをまたいで使用するデータの管理方法を整理

  • データの読み込み済み状態を管理する仕組みの追加

  • 不具合の修正と現在出ている警告の調査

引き続き、チェック作業と開発を進めていきます。


いいなと思ったら応援しよう!