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();
}
}
}
Unity 编辑器扩展 查找带有特定MonobBehaviour的GameObject
于 2024-10-11 12:48:08 首次发布