Недавно был занят, но все равно хочу кое-что записать.Недавно нужно было отсканировать проект и добавить скрипт, поэтому я проверил и записал.
Сканируйте файлы соответствующего типа в папке в редакторе Unity, например Prefab.
//便利预制件Prefab,从文件夹Assets/TestScene
string[] allPath = AssetDatabase.FindAssets("t:Prefab", new string[] {
"Assets/TestScene" });
for (int i = 0; i < allPath.Length; i++)
{
string path = AssetDatabase.GUIDToAssetPath(allPath[i]);
GameObject obj = AssetDatabase.LoadAssetAtPath<GameObject>(path);
if (obj != null)
{
Light[] lights = obj.GetComponentsInChildren<Light>();
foreach (Light light in lights)
{
Debug.Log(".......");
}
}
}
//保存更改
AssetDatabase.SaveAssets();
Отсканируйте все сцены в папке и получите в сцене компоненты типа XX.
//便利场景--获取场景中Light类型组件
string[] scenePaths = AssetDatabase.FindAssets("t:Scene", new string[] {
"Assets/TestScene" });
for (int i = 0; i < scenePaths.Length; i++)
{
string assetPath = AssetDatabase.GUIDToAssetPath(scenePaths[i]);
Scene newScene = EditorSceneManager.OpenScene(assetPath);
//获取Light类型组件
Light[] lights = Resources.FindObjectsOfTypeAll<Light>();
foreach (Light light in lights)
{
Debug.Log(".......");
}
EditorSceneManager.SaveScene(newScene);
}
Или вам может потребоваться отобразить поиск и изменить ход выполнения:
Всплывающее окно индикатора выполнения
//参数:1:弹窗标题,2:弹窗描述:可以用来写对应进度,3:进度0-1之间float值
EditorUtility.DisplayProgressBar("title", "des", slider);
Просто соус
------------------------------------------------ -------------КОНЕЦ------------------------------------ ---- --------------------------