この記事でのバージョン
Unity 2022.2.8f1
はじめに
UnityではPrefabをダブルクリック等で開くと、
そのPrefabだけの画面になり、さらにHierarchyにPrefabの名前が表示される
いわゆるPrefab Modeになります。
今回はこのPrefab Modeになっているか(プレハブを開いてるか)を判定する方法の紹介です!
なお、記事中の画像は以下のアセットを使っております。
Mobile Garage Vol. 2 |
プレハブを開いてるか(Prefab Modeか)を判定する方法
Prefab Modeになっているかというフラグはないので、
判定には現在の開いているPrefabの情報を取得するメソッド
PrefabStageUtilityのGetCurrentPrefabStageを使います。
これがnullであれば開いているPrefabがない = Prefab Modeではないという感じです。
using UnityEditor; using UnityEditor.SceneManagement;//PrefabStageUtilityを使うのに必要 using UnityEngine; [InitializeOnLoad]//コンストラクタ(PrefabModeSample())がエディター起動時等に呼ばれるように public static class PrefabModeSample { //================================================================================= //初期化 //================================================================================= static PrefabModeSample() { //再生していなくてもUpdateを実行し続けるように EditorApplication.update += Update; } //================================================================================= //更新 //================================================================================= private static void Update() { if (PrefabStageUtility.GetCurrentPrefabStage() == null) { Debug.Log($"Prefab Modeではない"); } else { Debug.LogWarning($"Prefab Mode中"); } } }