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);
    }
    void UpdateScenes(SceneReference _target)
    {
        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 _target.linkingData.sceneDatas)
            {
                if (scn.name == d.SceneName)
                {
                    dataToAdd = d;
                    break;
                }
            }

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

            newList.Add(dataToAdd);
        }

        Undo.RecordObject(_target.linkingData, "List Update");
        _target.linkingData.sceneDatas = newList;
        EditorUtility.SetDirty(_target.linkingData);
    }
Beispiel #3
0
    public override void OnInspectorGUI()
    {
        var t = (MultipleSceneSetting)target;

        GUILayout.BeginHorizontal();

        if (GUILayout.Button("Save Current Hierarchy"))
        {
            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 t.sceneDatas)
                {
                    if (scn.name == d.SceneName)
                    {
                        dataToAdd = d;
                        break;
                    }
                }

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

                newList.Add(dataToAdd);
            }

            Undo.RecordObject(t, "List Update");
            t.sceneDatas = newList;
            EditorUtility.SetDirty(t);
        }

        if (GUILayout.Button("Load Scenes"))
        {
            LoadScenes(t);
        }

        GUILayout.EndHorizontal();

        base.OnInspectorGUI();
    }
Beispiel #4
0
    static void SaveCurrentHierarchy()
    {
        EnsureFolder();

        var setups = EditorSceneManager.GetSceneManagerSetup();

        var path = EditorUtility.SaveFilePanelInProject("Create Scene Linking Data", "Scn_Data_1", "asset", "");

        if (path.Length != 0)
        {
            var linkingData = ScriptableObject.CreateInstance <MultipleSceneSetting>();

            foreach (var s in setups)
            {
                MultipleScenesData data = new MultipleScenesData();
                data.sceneObject = AssetDatabase.LoadAssetAtPath <SceneAsset>(s.path);
                linkingData.sceneDatas.Add(data);
            }

            AssetDatabase.CreateAsset(linkingData, path);
            AssetDatabase.SaveAssets();
        }
    }