(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

GameObjectがどのシーンに属しているかを取得する方法と、シーンを跨いでも破棄されない(DontDestroyOnLoad)かの判定【Unity】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2019.4.14f1


はじめに

今回はタイトル通りGameObjectがどのシーンに属しているかを取得する方法と、

それに併せて、シーンを跨いでも破棄されないオブジェクトかの判定方法の解説です!

f:id:kan_kikuchi:20201130064150j:plain



gameObject.scene

さっそくですが、GameObjectが属しているシーンはsceneで取得する事ができます。

Debug.Log($"{gameObject.name} : {gameObject.scene.name}");
f:id:kan_kikuchi:20201130064150j:plain


そしてシーンを跨いでも破棄されないオブジェクトは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()) {
  /*シーンを跨いでも破棄されないオブジェクトの処理*/
}