【Unity】编辑器扩展【一】

最近在进行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("场景中未找到该物体"));
        }

    }

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值