最近在进行Unity编辑器得扩展编写,记录下几个感觉比较好玩常用得接口。
EditorGUIUtility.PingObject();
Selection.activeObject = go;
该接口用于把场景scene内或者文件夹路径视图内得文件高亮显示,看起来就像鼠标点击了一样。
1、场景scene内物体高亮显示。需要EditorGUIUtility.PingObject()传入得实参为拿到得场景内得物体,通常可以通过GameObject.FindObjectOfType<>()接口,获取到某一类得GameObject,作为参数传入EditorGUIUtility.PingObject()内。然后通过Selection.activeObject=拿到得该GameObject,实现高亮。
以下是某示例:
/// <summary>
/// 快速在场景中定位物体
/// </summary>
public void QuckSelectInScene()
{
AuxReverb go = GameObject.FindObjectOfType<AuxReverb>();
if (go != null)
{
EditorGUIUtility.PingObject(go.GetInstanceID());
Selection.activeObject = go;
}
else
{
this.ShowNotification(new GUIContent("场景中未找到该物体"));
}
}
2、文件夹路径视图内文件高亮显示。通常可以通过AssetDatabase.LoadAssetAtPath<Object>(path);拿到得物体作为参数传入EditorGUIUtility.PingObject();中,然后通过Selection.activeObject=拿到得该GameObject,实现高亮。
以下是某示例:
/// <summary>
/// 快速在Project文件夹路径视图里定位
/// </summary>
public void QuckSelectInProjectView()
{
AuxReverb go = GameObject.FindObjectOfType<AuxReverb>();
if (go != null)
{
EditorGUIUtility.PingObject(go);//显示出点击得高亮得状态
Object oprarent = PrefabUtility.GetPrefabParent(Selection.activeObject);
string s = AssetDatabase.GetAssetPath(oprarent);
Object oottt = AssetDatabase.LoadAssetAtPath<Object>(s);
EditorGUIUtility.PingObject(oottt);
Selection.activeObject = oottt;
}
else
{
this.ShowNotification(new GUIContent("场景中未找到该物体"));
}
}