Unity マルチシーンで別シーンにあるカメラをCanvasのRenderCameraに設定したい
はじめに
Sorting Layersの設定により、Canvasよりもパーティクルを画面前に出したかった。
そのためにCanvasのRenderModeをScreenSpace-CameraにしてRenderCameraにMainCameraを設定したかったが、
マルチシーン環境で、別シーンにあるMainCameraをInspector上で設定することはできないようだ。
やったこと
いろいろやり方はあるようだが、シーンが読み込まれた際に他のシーンのカメラを自動でアタッチするやり方をとった。
下記のスクリプトをMainCameraがないシーンのCanvasにアタッチした。
using UnityEngine; namespace GameLogics { public class DynamicCameraAssign : MonoBehaviour { private Canvas _canvas; private void Start() { _canvas = GetComponent<Canvas>(); if (_canvas != null) { AssignCamera(); } } private void AssignCamera() { Camera targetCamera = FindCamera(); if (targetCamera != null) { Debug.Log("ScreenSpaceCameraに設定しました。"); _canvas.renderMode = RenderMode.ScreenSpaceCamera; _canvas.worldCamera = targetCamera; } } private Camera FindCamera() { // 他のシーンにあるカメラを検索 return FindObjectOfType<Camera>(); } } }