この記事でのバージョン
Unity 2018.4.6f1
はじめに
今回はHierarchy上で選択しているGameObjectを固定する、
言い換えると、一つのオブジェクト以外選択できないようにするというトリッキーな話です。
イメージとしては以下のような感じ。
なお、Inspectorの表示を固定したいだけなら、右上のロック機能を使った方が早いです。
SelectedGameObjectFixer
さっそく、Hierarchy上で選択しているGameObjectを固定するクラス
SelectedGameObjectFixerのコードです。
これをHierarchy上のオブジェクトにAddし、Targetに固定したいオブジェクトの追加するだけ。
(解除したい場合はTargetをNoneにします)
すると、Hierarchy上ではTargetに指定したオブジェクトと、
SelectedGameObjectFixerをAddしたオブジェクトしか選択出来なくなります。
一応、プログラムについて簡単に解説をしてみると、以下のような感じです。
- ExecuteInEditModeでOnEnableやOnDestroyが再生していなくても実行されるように
- OnEnableでEditorApplication.updateに処理を登録、更新処理が再生していなくても実行出来るように
- 更新処理で(複数選択も無効に出来るように)Selection.objectsに対象を設定し続ける
ちなみにSelectionについては以下の記事を参考の事。
余談ですが、オブジェクトの検索や選択を楽にするエディタ拡張や、
選択してたObjectを記録し、Inspectorに戻ると進む機能を追加するエディタ拡張なんかも作ってました。