Unity 编辑器扩展 查找带有特定MonobBehaviour的GameObject

using UnityEditor;
using UnityEngine;

public class FindObjectWithSpecificScript : EditorWindow
{
    private MonoScript targetMonoScript;
    private Vector2 scrollPos;

    [MenuItem("我的工具/查找带有特定MonobBehaviour的GameObject")]
    public static void ShowWindow()
    {
        GetWindow<FindObjectWithSpecificScript>(true, "查找带有特定MonobBehaviour的GameObject", true);
    }

    void OnGUI()
    {
        targetMonoScript = (MonoScript)EditorGUILayout.ObjectField(targetMonoScript, typeof(MonoScript), false);
        if (targetMonoScript != null)
        {
            scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
            System.Type targetType = targetMonoScript.GetClass();
            if (targetType != null && targetType.IsSubclassOf(typeof(MonoBehaviour)))
            {
                string[] pathsToAssets = AssetDatabase.FindAssets("t:GameObject");
                foreach (var path in pathsToAssets)
                {
                    var path1 = AssetDatabase.GUIDToAssetPath(path);
                    var go = AssetDatabase.LoadAssetAtPath<GameObject>(path1);
                    Component component = go.GetComponentInChildren(targetType,true);
                    if (component != null)
                    {
                        if (GUILayout.Button(go.name))
                        {
                            Selection.activeObject = go;
                        }
                    }
                }
            }
            else
            {
                EditorGUILayout.LabelField($"{targetMonoScript.name} 不是 MonoBehavior");
            }
            EditorGUILayout.EndScrollView();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值