Редактор Unity сканирует сцены или компоненты по пути и вносит пакетные изменения.

Недавно был занят, но все равно хочу кое-что записать.Недавно нужно было отсканировать проект и добавить скрипт, поэтому я проверил и записал.

Сканируйте файлы соответствующего типа в папке в редакторе 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);

Просто соус
------------------------------------------------ -------------КОНЕЦ------------------------------------ ---- --------------------------

Guess you like

Origin blog.csdn.net/QO_GQ/article/details/129369901