【Unity】HideFlagsでコンポーネントを隠した状態でPrefab化すると・・・

HideFlags.HideInInspectorを指定するとInspectorからそのコンポーネントを隠すことができる。
構造上多くのコンポーネントを割り当てるようなスクリプトがある場合、弄られたくないコンポーネントは隠蔽しておくと安心&すっきりするのでエディタ拡張するときにオススメ。

ただ、隠蔽した状態でPrefabにすると強制的にHideFlagsの状態が元に戻ってしまう。

そこで、Prefab化したときに毎度HideFlagsを設定しなおすことで回避する。

厳密にPrefab化したタイミングを取るのが面倒だったため、とりあえずOnValidateで対処した。

void OnValidate()
{
  hogeComponent.hideFlags = HideFlags.HideInInspector | HideFlags.HideInHierarchy;
}

ここでHideInHierarchyも指定しないと、以下のようにプロジェクトブラウザ上の表示がおかしなことになる。
HideInInspector
これは、TestというGameObjectにMeshRendererをHideInInspectorのみ付けてPrefabにしたもの。

GameObjectの子にMeshRendererが生で出てしまい、普通に選択できる。
さらに、インスペクタにはMeshRendererの項目がそのまま表示されてしまうので、HideInInspectorをつけた意味がなくなってしまう。

HideInHierarchyもつけることで、Prefabでも隠蔽した状態を維持できる。

Unityのアセット販売中!

ステートマシンの状態遷移やパラメータはエディタで編集でき、
ゲームロジックに依存するステートの挙動はスクリプトで記述可能なエディタ拡張。

詳細はこちら

RPGツクールVXやWOLF RPGエディターのオートタイルに準拠したエディタ拡張。

詳細はこちら

オススメ!