読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

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

Hierarchyの変更を検知する【Unity】【エディタ拡張】

Unity エディタ拡張

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

この記事でのバージョン
Unity 5.5.0p1


はじめに

今回はHierarchyの変更を検知する方法のご紹介。

なお、エディタ上だけの方法なのであしからず


EditorApplication.hierarchyWindowChanged

Hierarchyの変更を検知したい時は、EditorApplicationのhierarchyWindowChangedが便利です。

オブジェクトの階層が変化したときに呼び出されるコールバック


使い方は以下のようにメソッドを登録するだけ。

//Hierarchyに変更がある度にOnChangedというメソッドが呼ばれるように。
EditorApplication.hierarchyWindowChanged += OnChanged;


具体的な例として、

Hierarchyに変更がある度に、Hierarchy上の全オブジェクト名を表示するプログラムを書いてみました。

なお、HierarchyTest.csはEditorディレクトリに入れてるだけで動作します。


f:id:kan_kikuchi:20170122131841p:plain


使用イメージは以下のような感じ。


f:id:kan_kikuchi:20170122133322g:plain


hierarchyWindowChangedが実行されるタイミングは、

オブジェクトの生成や破棄、親子や兄弟間の移動はもちろんの事、Transformの変更、

コンポーネントの追加や破棄、Gameobjectの表示切り替えなど、様々です。

なので、エディタ実行中に使うと結構な頻度で呼ばれるため、注意が必要です。