Unity编辑器监听Assets下资源事件
继承AssetModificationProcessor类,方法是固定写法,名字要对应才会调用
public class ListeningResourceTools : AssetModificationProcessor
{
[InitializeOnLoadMethod]
static void InitializeOnLoadMethod()
{
EditorApplication.projectChanged += () =>
{
Debug.Log("Change");
};
}
/// <summary>
/// 监听鼠标左键,打开资源事件
/// </summary>
/// <param name="assetPath"></param>
/// <param name="message"></param>
/// <returns></returns>
public static bool IsOpenForEdit(string assetPath,out string message)
{
message=null;
Debug.LogFormat("assetPath : {0} ", assetPath);
return true;
}
/// <summary>
/// 监听资源即将被创建事件
/// </summary>
/// <param name="path"></param>
public static void OnWillCreateAsset(string path)
{
Debug.LogFormat("path : {0}", path);
}
/// <summary>
/// 监听资源即将被保存事件
/// </summary>
/// <param name="paths"></param>
/// <returns></returns>
public static string[] OnWillSaveAssets(string[] paths)
{
if (paths!=null)
{
Debug.LogFormat("path : {0}", string.Join(",", paths));
}
return paths;
}
/// <summary>
/// 监听资源即将被移走事件
/// </summary>
/// <param name="oldPath"></param>
/// <param name="newPath"></param>
/// <returns></returns>
public static AssetMoveResult OnWillMoveAsset(string oldPath,string newPath)
{
Debug.LogFormat("form:{0} to {1}",oldPath,newPath);
return AssetMoveResult.DidMove;
}
/// <summary>
/// 监听资源即将被删除事件
/// </summary>
/// <param name="assetPath"></param>
/// <param name="option"></param>
/// <returns></returns>
public static AssetDeleteResult OnWillDeleteAsset(string assetPath,RemoveAssetOptions option)
{
Debug.LogFormat("delete:{0}",assetPath);
return AssetDeleteResult.DidDelete;
}
}