【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のアセット販売中!

Arbor 3

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

詳細はこちら

Nostalgia 2

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

詳細はこちら

オススメ!


Privacy Preference Center

Your Privacy

This site uses cookies to display contents and advertisements tailored to users, provide social media functions, measure advertisement impressions and clicks. We also gather information on users' site usage status and provide them to social media, advertisement distribution and data analysis partners. Each partner may use this information in combination with other information that the user provided to each partner or other information gathered when the user used the service of each partner.

Analytics, Ads