この記事でのバージョン
Unity 5.5.0p1
はじめに
今回はHierarchyの変更を検知する方法のご紹介。
なお、エディタ上だけの方法なのであしからず。
EditorApplication.hierarchyWindowChanged
Hierarchyの変更を検知したい時は、EditorApplicationのhierarchyWindowChangedが便利です。
オブジェクトの階層が変化したときに呼び出されるコールバック
使い方は以下のようにメソッドを登録するだけ。
//Hierarchyに変更がある度にOnChangedというメソッドが呼ばれるように。
EditorApplication.hierarchyWindowChanged += OnChanged;
具体的な例として、
Hierarchyに変更がある度に、Hierarchy上の全オブジェクト名を表示するプログラムを書いてみました。
なお、HierarchyTest.csはEditorディレクトリに入れてるだけで動作します。
使用イメージは以下のような感じ。
hierarchyWindowChangedが実行されるタイミングは、
オブジェクトの生成や破棄、親子や兄弟間の移動はもちろんの事、Transformの変更、
コンポーネントの追加や破棄、Gameobjectの表示切り替えなど、様々です。
なので、エディタ実行中に使うと結構な頻度で呼ばれるため、注意が必要です。