概要
using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { ObjectChangeEvents.changesPublished += ( ref ObjectChangeEventStream stream ) => { Debug.Log( "changesPublished" ); }; } }
ObjectChangeEvents.changesPublished は以下のようなタイミングで呼び出される
- ゲームオブジェクトが生成された
- ゲームオブジェクトの親が変更された
- ゲームオブジェクトが削除された
- ゲームオブジェクトのプロパティが変更された
- ゲームオブジェクトにコンポーネントが追加された
- ゲームオブジェクトのコンポーネントが削除された
- コンポーネントのプロパティが変更された
- アセットのプロパティが変更された
- 元となるプレハブが変更されてシーンのプレハブインスタンスが更新された
- EditorSceneManager.MarkSceneDirty が使用された
- Undo.RegisterFullObjectHierarchyUndo が使用された
- Undo.RegisterCreatedObjectUndo が使用された
- Undo.DestroyObjectImmediate が使用された
引数の ObjectChangeEventStream を使用することで
発生したイベントの詳細な情報を取得できる