この記事でのバージョン
Unity 2019.4.14f1
はじめに
今回はタイトル通りGameObjectがどのシーンに属しているかを取得する方法と、
それに併せて、シーンを跨いでも破棄されないオブジェクトかの判定方法の解説です!
gameObject.scene
さっそくですが、GameObjectが属しているシーンはsceneで取得する事ができます。
Debug.Log($"{gameObject.name} : {gameObject.scene.name}");
そしてシーンを跨いでも破棄されないオブジェクトはDontDestroyOnLoadというsceneに属しているので、
このsceneの名前を使って判定を行えます。
if(gameObject.scene.name == "DontDestroyOnLoad"){ /*シーンを跨いでも破棄されないオブジェクトの処理*/ }
なお、拡張メソッド を使って実装してみると以下のような感じに。
using UnityEngine; /// <summary> /// GameObjectの拡張クラス /// </summary> public static class GameObjectExtension{ /// <summary> /// シーンをまたいでも破棄されないオブジェクトか /// </summary> public static bool IsDontDestroyOnLoad(this GameObject gameObject) { return gameObject.scene.name == "DontDestroyOnLoad"; } }
if (gameObject.IsDontDestroyOnLoad()) { /*シーンを跨いでも破棄されないオブジェクトの処理*/ }