Unityでアセットが作成・削除・移動・保存される前のタイミングをフックする方法です。
Unity2020.1.10
AssetModificationProcessor
アセットが作成・削除・移動・保存される前のタイミングをフックするにはUnityEditor.AssetModificationProcessor
を使用します。
using UnityEditor; class FooConfigProcessor : UnityEditor.AssetModificationProcessor { // アセットを作成しようとしたときに呼ばれる // metaファイルの情報も入ってくる private static void OnWillCreateAsset(string assetName) { } // アセットを削除しようとしたときに呼ばれる(削除が成功するかどうかにかかわらず呼ばれる) // このメソッドの中でAssetDatabaseによる削除は行わないこと private static AssetDeleteResult OnWillDeleteAsset(string assetPath, RemoveAssetOptions options) { // 自身で削除を行った場合にはDidDeleteを返す //return AssetDeleteResult.DidDelete; // DidNotDeleteを返すとUnityのデフォルトの処理により削除が行われる return AssetDeleteResult.DidNotDelete; // 削除出来なかった場合にはFailedMoveを返す return AssetDeleteResult.FailedDelete; } // アセットを移動しようとしたときに呼ばれる(移動が成功するかどうかにかかわらず呼ばれる) // このメソッドの中でAssetDatabaseによる移動は行わないこと private static AssetMoveResult OnWillMoveAsset(string sourcePath, string destinationPath) { // 自身で移動を行った場合にはDidMoveを返す //return AssetMoveResult.DidMove; // DidNotMoveを返すとUnityのデフォルトの処理により移動が行われる return AssetMoveResult.DidNotMove; // 移動出来なかった場合にはFailedMoveを返す //return AssetMoveResult.FailedMove; } // アセットの変更をディスクに書き込む前のタイミングで呼ばれる private static string[] OnWillSaveAssets(string[] paths) { // 書き込むファイルのみを返却する return paths; } }
作成・削除・移動の後処理を記述するにはAssetPostprocessor
関連して、 作成・削除・移動の後処理を記述するにはAssetPostprocessorを使います。