利用unity提供的OnOpenAssetAttribute特性。
unityAPI
描述 用于打开 Unity 中某个资源的回调属性(例如,双击 Project Browser 中的某个资源时会触发回调)。
将此属性添加至某个静态方法后,系统会在 Unity 即将打开资源时调用该方法。该方法应有以下签名之一: static bool OnOpenAsset(int instanceID, int line) static bool OnOpenAsset(int instanceID, int line, int column) 如果处理了资源打开操作,则返回 true,如果资源应该由外部工具打开,则返回 false。
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
public class MyAssetHandler
{
[OnOpenAssetAttribute(1)]
public static bool step1(int instanceID, int line)
{
string name = EditorUtility.InstanceIDToObject(instanceID).name;
Debug.Log("Open Asset step: 1 (" + name + ")");
return false;
}
[OnOpenAssetAttribute(2)]
public static bool step2(int instanceID, int line)
{
Debug.Log("Open Asset step: 2 (" + instanceID + ")");
return false;
}
}
注意:
OnOpenAssetAttribute 具有提供回调中的顺序索引的选项,从 0 开始。如果您有多个 OnOpenAssetAttribute 回调并想以特定顺序调用它们,此选项将非常有用。系统将从零开始按顺序调用回调。 instanceID是拿到了双击资源的instanceID,line和column好像没什么用。 注意这个是监听全局的,没有办法特定对某个类型的asset的双击。 所以要在检测到时,拿instanceID验证下是不是对应的Asset,不是的话返回false,以免屏蔽了对其它资源的双击回调。
|