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
Esempio n. 3
0
    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);
    }
Esempio n. 4
0
        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();
    }
Esempio n. 6
0
    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");
    }
Esempio n. 7
0
    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());
    }