static void SaveCurrentHierarchy(MultipleSceneSetting _data)
    {
        var setups = EditorSceneManager.GetSceneManagerSetup();

        var newList = new List <MultipleScenesData>();

        foreach (var s in setups)
        {
            SceneAsset         scn       = AssetDatabase.LoadAssetAtPath <SceneAsset>(s.path);
            MultipleScenesData dataToAdd = null;
            foreach (var d in _data.sceneDatas)
            {
                if (scn.name == d.SceneName)
                {
                    dataToAdd = d;
                    break;
                }
            }

            if (dataToAdd == null)
            {
                dataToAdd             = new MultipleScenesData();
                dataToAdd.sceneObject = scn;
            }

            newList.Add(dataToAdd);
        }

        Undo.RecordObject(_data, "List Update");
        _data.sceneDatas = newList;
        EditorUtility.SetDirty(_data);
    }
예제 #2
0
    void LoadScenes(MultipleSceneSetting _data)
    {
        var sceneSetups = EditorSceneManager.GetSceneManagerSetup();

        foreach (var setup in sceneSetups)
        {
            bool exist = false;
            foreach (var d in _data.sceneDatas)
            {
                var path = AssetDatabase.GetAssetPath(d.sceneObject);

                if (path == setup.path)
                {
                    exist = true;
                    break;
                }
            }

            if (!exist)
            {
                var scn = EditorSceneManager.GetSceneByPath(setup.path);
                EditorSceneManager.CloseScene(scn, true);
            }
        }


        foreach (var d in _data.sceneDatas)
        {
            var path = AssetDatabase.GetAssetPath(d.sceneObject);
            var scn  = EditorSceneManager.GetSceneByPath(path);

            if (scn.isLoaded)
            {
                continue;
            }

            EditorSceneManager.OpenScene(path, OpenSceneMode.Additive);
            Debug.Log("[MultipleSceneSetting] Scene Loaded Additively = " + d.sceneObject.name);
        }
    }