| 利用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,以免屏蔽了对其它资源的双击回调。
 |