static void MergeScenes() { Scene activeScene = new Scene(); AmsMultiSceneSetup activeSetup = null; List<AmsMultiSceneSetup.SceneEntry> bakedScenes = new List<AmsMultiSceneSetup.SceneEntry>(); GetCommonParameters( ref activeScene, ref activeSetup, bakedScenes ); if ( bakedScenes.Count < 1 ) return; AmsDebug.Log( null, "Running MergeScenes on Scene {0}", activeScene.name ); foreach( var entry in bakedScenes ) { if ( !entry.scene.isLoaded ) { AmsDebug.LogError( activeSetup, "Could not merge non-loaded scene: {0}", entry.scene.name ); continue; } var sourceCrossRefs = AmsCrossSceneReferences.GetSceneSingleton( entry.scene.scene, false ); if ( sourceCrossRefs ) GameObject.DestroyImmediate( sourceCrossRefs.gameObject, false ); AmsDebug.Log( null, "Merging {0} into {1}", entry.scene.name, activeScene.name ); EditorSceneManager.MergeScenes( entry.scene.scene, activeScene ); } } // MergeScenes
static void MergeScenes() { Scene activeScene = new Scene(); AmsMultiSceneSetup activeSetup = null; List<AmsMultiSceneSetup.SceneEntry> bakedScenes = new List<AmsMultiSceneSetup.SceneEntry>(); GetCommonParameters( ref activeScene, ref activeSetup, bakedScenes ); if ( bakedScenes.Count < 1 ) return; AmsDebug.Log( null, "Running AMS MergeScenes on Scene {0} ({1})", activeScene.name, activeSetup.scenePath ); foreach( var entry in bakedScenes ) { if ( !entry.scene.isLoaded ) { AmsDebug.LogError( activeSetup, "Could not merge non-loaded scene: {0}", entry.scene.name ); continue; } // Merge the cross-scene references (and keep track of the merges) var bakedSceneSetup = GameObjectEx.GetSceneSingleton<AmsMultiSceneSetup>( entry.scene.scene, false ); if ( bakedSceneSetup ) AmsCrossSceneReferences.EditorBuildPipelineMergeScene( bakedSceneSetup, activeSetup ); AmsDebug.Log( null, "Running Unity MergeScenes for {0} into {1}", entry.scene.name, activeScene.name ); EditorSceneManager.MergeScenes( entry.scene.scene, activeScene ); } } // MergeScenes
public static void Merge() { Scene[] scenes = new Scene[SceneManager.sceneCount]; for (int i = 0; i < SceneManager.sceneCount; i++) { scenes[i] = SceneManager.GetSceneAt(i); } int SceneNum = SceneManager.sceneCount; for (int i = 1; i < SceneNum; i++) { EditorSceneManager.MergeScenes(scenes[i], scenes[0]); } GameObject Root = GameObject.Find("Envirment"); GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("Terrain"); for (int i = 0; i < gameObjects.Length; i++) { if (gameObjects[i].transform.parent != null) { continue; } gameObjects[i].transform.SetParent(Root.transform); } EditorSceneManager.SaveScene(scenes[0], scenes[0].path); }
public static void OpenSceneAdditive(string path) { #if UNITY_5_2_OR_EARLIER EditorApplication.OpenSceneAdditive(path); #else var scene = EditorSceneManager.OpenScene(path, OpenSceneMode.Additive); EditorSceneManager.MergeScenes(scene, EditorSceneManager.GetActiveScene()); #endif }
public static void saveToNewScene() { string folderName = "Autosaved Scenes"; string newTimestamp = "TS-" + getTimestamp(DateTime.Now, true, true); int tsLength = newTimestamp.Length; string newSceneName, oldSceneName; Scene newScene; int length = EditorSceneManager.GetActiveScene().name.IndexOf("TS-"); // delimiter // create the new scene // if we are not currently in a scene if (EditorSceneManager.GetActiveScene().name == "") // if we are not in a scene { newSceneName = "Autosaved Scene" + newTimestamp; oldSceneName = ""; newScene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single); } else // if we are in a scene { if (length < 0) // if the scene name does not contain the delimiter { newSceneName = "Test Scene" + " " + newTimestamp; oldSceneName = EditorSceneManager.GetActiveScene().name; } // if there is an open scene else { // Get the new scene name oldSceneName = EditorSceneManager.GetActiveScene().name; newSceneName = oldSceneName.Substring(0, length - 1) + " " + newTimestamp; // got the new scene name } // create new scene newScene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Additive); // copy everything from old scene into new scene EditorSceneManager.MergeScenes(EditorSceneManager.GetSceneByName(oldSceneName), newScene); // copied everything from old scene into new scene } string savedScene = currentFolderPath + folderName + "/" + newSceneName + ".unity"; EditorSceneManager.SaveScene(newScene, savedScene, false); Lightmapping.Bake(); }
public void MergeScenesToNew() { this.newScene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Additive); EditorSceneManager.SetActiveScene(this.newScene); for (int x = 0; x < 3; x++) { for (int z = 0; z < 3; z++) { string relativePath = "Assets" + Application.dataPath.Substring(Application.dataPath.Length) + "/Scene_" + x + "_" + z + ".unity"; Scene sceneToLoad = EditorSceneManager.OpenScene(RelativeAssetPathTo("Scene_" + x + "_" + z + ".unity"), OpenSceneMode.Additive); EditorSceneManager.MergeScenes(sceneToLoad, this.newScene); } } EditorSceneManager.SaveScene(this.newScene, RelativeAssetPath() + "/MergedScene.unity"); }
public static void InitializeScene() { string defaultScenePath = "Assets/Scenes/DefaultScene.unity"; string clearMessage = "Deseja carregar novos objetos na scene atual? Salve antes de prosseguir."; string clearTitle = "Inicializar Scene"; Object[] objects = GameObject.FindObjectsOfType(typeof(GameObject)); // Caso já existam objetos na scene verificar se o usuário realmente quer carregar novos objectos if (objects.Length > 0) { if (!EditorUtility.DisplayDialog(clearTitle, clearMessage, "Ok", "Cancelar")) { return; } } EditorSceneManager.OpenScene(defaultScenePath, OpenSceneMode.Additive); Scene defaultScene = EditorSceneManager.GetSceneByName("DefaultScene"); EditorSceneManager.MergeScenes(defaultScene, EditorSceneManager.GetActiveScene()); }