アカデメイア実験室のラボノートには勉強したことのメモを書いていきます。
目標はUnity Learnで3Dを学んで面白そうな何か作ってみることです(雑)
最終的には記事にも価値が出るようなものにしたいですが、何しろ不慣れなので、当面は行動記録として「投稿すること」を優先しようと思います。
こうしたほうがいいぞ!とかあればTwitterで絡んでください。
今日の内容は3DGameを作る(デバッグ編3)です
Roll-a-ballを基準にゲームを作ろうとしています
つまずいた点と起きた問題、簡単な解決策をまとめます。
遭遇した問題 移行したシーンを展開すると、現在のシーンが上書きされる。
[症状1] 現在のプロジェクトに前のプロジェクトでのセットアップを持ち込むためにUnityPackageで移行してシーンを開くと、その時点まで現在のプロジェクトで行っていたものが消える。
[症状2] 配布されたサンプルシーンを確かめようと開いた途端、名前も違う現在開いていたシーンが消える。
[根本原因] Unityに登録されたファイルはすべて.metaファイルにあるGUIDというユニークIDで管理されている。Unityを起動したとき自動で配置されるデフォルトシーンは生成されるのではなく作成されていたものが置かれるため、GUIDは必ず共通になる。したがって、Unityからは区別がつかず、複数開くのではなく、同一のシーン上で上書きされる。
[再現環境] Unity2018:再現した, Unity2022:再現した
[最終的な解決方法]
基本的に、シーンを扱う場合にはGUIDが異なるようにすればよい。
開く側:
方法1. Unityを開始したときのデフォルトシーンをいったん消して作成しなおす。(GUIDがランダム生成されるため上書きされなくなる)
方法2. folderの.metaファイルを消して再生成させる。
送る側:
方法3. 受け渡しはシーンではなくPrefabやそれ以外の配布物だけにする。
方法4. 開く側のようにして作った、デフォルトシーン以外のシーンを配布シーンにする。
以上、今日はここまで
またよろしくお願いします。