(:3[kanのメモ帳]

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

(:3[kanのメモ帳]

Hierarchy上で選択しているGameObjectを固定する【Unity】【エディタ拡張】


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


この記事でのバージョン
Unity 2018.4.6f1


はじめに

今回はHierarchy上で選択しているGameObjectを固定する

言い換えると、一つのオブジェクト以外選択できないようにするというトリッキーな話です。


イメージとしては以下のような感じ。

f:id:kan_kikuchi:20190817045105g:plain


なお、Inspectorの表示を固定したいだけなら、右上のロック機能を使った方が早いです。

f:id:kan_kikuchi:20190817045147j:plain



SelectedGameObjectFixer

さっそく、Hierarchy上で選択しているGameObjectを固定するクラス

SelectedGameObjectFixerのコードです。



これをHierarchy上のオブジェクトにAddし、Targetに固定したいオブジェクトの追加するだけ。

(解除したい場合はTargetをNoneにします)

f:id:kan_kikuchi:20190817044509j:plain


すると、Hierarchy上ではTargetに指定したオブジェクトと、

SelectedGameObjectFixerをAddしたオブジェクトしか選択出来なくなります。

f:id:kan_kikuchi:20190817045105g:plain


一応、プログラムについて簡単に解説をしてみると、以下のような感じです。

  1. ExecuteInEditModeでOnEnableやOnDestroyが再生していなくても実行されるように
  2. OnEnableでEditorApplication.updateに処理を登録、更新処理が再生していなくても実行出来るように
  3. 更新処理で(複数選択も無効に出来るように)Selection.objectsに対象を設定し続ける


ちなみにSelectionについては以下の記事を参考の事。



余談ですが、オブジェクトの検索や選択を楽にするエディタ拡張や、

f:id:kan_kikuchi:20170530055428g:plain


選択してたObjectを記録し、Inspectorに戻ると進む機能を追加するエディタ拡張なんかも作ってました。

f:id:kan_kikuchi:20190708045734g:plain