public static void BuildNavMeshForMultipleScenes(string[] paths) { if (paths.Length == 0) { return; } for (int i = 0; i < paths.Length; i++) { for (int j = i + 1; j < paths.Length; j++) { if (paths[i] == paths[j]) { throw new System.Exception("No duplicate scene names are allowed"); } } } if (!EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo()) { return; } if (!EditorSceneManager.OpenScene(paths[0]).IsValid()) { throw new System.Exception("Could not open scene: " + paths[0]); } for (int i = 1; i < paths.Length; ++i) { EditorSceneManager.OpenScene(paths[i], OpenSceneMode.Additive); } NavMeshBuilder.BuildNavMesh(); Object asset = NavMeshBuilder.sceneNavMeshData; for (int i = 0; i < paths.Length; ++i) { if (EditorSceneManager.OpenScene(paths[i]).IsValid()) { NavMeshBuilder.sceneNavMeshData = asset; EditorSceneManager.SaveScene(SceneManager.GetActiveScene()); } } }
public static void BuildNavMeshForMultipleScenes(string[] paths) { if (paths.Length != 0) { for (int i = 0; i < paths.Length; i++) { for (int j = i + 1; j < paths.Length; j++) { if (paths[i] == paths[j]) { throw new Exception("No duplicate scene names are allowed"); } } } if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo()) { if (!EditorSceneManager.OpenScene(paths[0]).IsValid()) { throw new Exception("Could not open scene: " + paths[0]); } for (int k = 1; k < paths.Length; k++) { EditorSceneManager.OpenScene(paths[k], OpenSceneMode.Additive); } NavMeshBuilder.BuildNavMesh(); UnityEngine.Object sceneNavMeshData = NavMeshBuilder.sceneNavMeshData; for (int l = 0; l < paths.Length; l++) { if (EditorSceneManager.OpenScene(paths[l]).IsValid()) { NavMeshBuilder.sceneNavMeshData = sceneNavMeshData; EditorSceneManager.SaveScene(SceneManager.GetActiveScene()); } } } } }