Unity模糊查找MonoBehaviour

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using UnityEditor;

using UnityEngine;

 

namespace Assets.Editor

{

    class FindMonoBehaviour : ScriptableWizard

    {

        public string text;

 

        [MenuItem("Temp/Find MonoBehaviour")]

        public static void CreateAssetBundle()

        {

            var findMonoBehaviour  = DisplayWizard<FindMonoBehaviour>("Find MonoBehaviour", "Create");

        }

 

        public void OnWizardCreate()

        {

            string currentScenePath = EditorApplication.currentScene;

 

            if (!string.IsNullOrEmpty(currentScenePath))

                EditorApplication.OpenScene(currentScenePath);

            else

                return;

            foreach (GameObject obj in UnityEngine.Object.FindObjectsOfType(typeof(GameObject)))

            {

                if (obj.transform.parent == null)

                {

                    FindScripts(obj, obj.name);

                    TraceGameObject(obj, obj.name);

                }

            }

        }

 

        public  void FindScripts(GameObject obj, String gameObjPath)

        {

            List<MonoBehaviour> scripts = new List<MonoBehaviour>();

            obj.GetComponents<MonoBehaviour>(scripts);

 

            foreach (MonoBehaviour script in scripts)

            {

                if (script == null)

                    continue;

                if (script.GetType().ToString().Contains(text))

                    Debug.Log("Script=" + script.GetType() + "                  GameObject=" + gameObjPath);

            }

        }

        public void TraceGameObject(GameObject obj, String prefix)

        {

            List<Transform> trs = new List<Transform>();

            obj.GetComponentsInChildren<Transform>(true, trs);

            foreach (Transform tr in trs)

            {

                if (tr.parent == obj.transform)

                {

                    String temp = prefix + "/" + tr.gameObject.name;

                    //Debug.Log(temp);

                    FindScripts(tr.gameObject, temp);

 

                    TraceGameObject(tr.gameObject, temp);

                }

            }

        }

    }

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值