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); }
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(); }
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(); } }