Open1
Unity Camera をシーンに配置せず一つにまとめる方法
Unity でシーン毎に MainCamera を設置すると後々の調整などが大変。
なのでゲーム開始時に 共通カメラを生成して DontDestroy に置けば楽です。
AppStarter.cs
public static class AppStarter
{
[RuntimeInitializeOnLoadMethod]
private static void RuntimeInitializeOnLoad()
{
var go = new GameObject( "MainCamera" );
GameObject.DontDestroyOnLoad( go );
var camera = go.AddComponent< Camera >();
camera.clearFlags = CameraClearFlags.SolidColor;
go.AddComponent< AudioListener >();
go.AddComponent< CinemachineBrain >();
}
あとは各シーンにはカメラを置かないようにします。
ただそれだとシーン毎にカメラの初期位置や制御コンポーネントの入れ替えなどを行わなければならないので面倒な個所も出ると思います。
そこで Cinemachine を導入します。
各シーンに MainCamera の代わりに CinemachineCamera を置き、カメラの制御に使います。
またシーンにカメラがないと Editor 停止中は Game ビューに大きく No camera rendering
と出てしまうので、特にデザイナさんからはゲーム中の見た目が確認しにくいといわれるかもしれませんが、CinemachineCamera を置くことで Scene ビューの Cameras の小さいウィンドウで見た目を確認することができます。
Cameras が表示されない場合は Scene ビュー右上の ︙ から Overlay Menus
を表示して Cameras
を選択すればOK です。
Cameras ウィンドウは最大化することもできます。 なので Scene ビュータブを右クリック -> Add Tab -> Scene で Scene ビューを複製し Cameras を最大化しておけば従来の Game ビューと同じように見た目を確認しながら作業をすることができます。