(:3[kanのメモ帳]

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

(:3[kanのメモ帳]


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


Prefab Modeになっているか(プレハブを開いてるか)を判定する方法【Unity】【エディタ拡張】


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


この記事でのバージョン
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中");
    }
  }

}