public static void CB_Scene_UpdateDatabase() { cb_scenes_displayProgressBar = true; cb_scenes_action = "Part 1 of 3: Getting scenes database..."; cb_scenes_progress = 1 / 2; if (!E_Helpers.DirExists(string.Format("Assets{0}Resources{0}ScenesDatabase{0}", Path.DirectorySeparatorChar))) { E_Helpers.CreateDirectory(string.Format("Assets{0}Resources{0}ScenesDatabase{0}", Path.DirectorySeparatorChar)); } SceneDatabase database; if (E_Helpers.FileExists(string.Format("Assets{0}Resources{0}ScenesDatabase{0}ScenesDatabase.asset", Path.DirectorySeparatorChar))) { database = (SceneDatabase)AssetDatabase.LoadAssetAtPath(string.Format("Assets{0}Resources{0}ScenesDatabase{0}ScenesDatabase.asset", Path.DirectorySeparatorChar), typeof(SceneDatabase)); } else { database = ScriptableObject.CreateInstance <SceneDatabase>(); AssetDatabase.CreateAsset(database, string.Format("Assets{0}Resources{0}ScenesDatabase{0}ScenesDatabase.asset", Path.DirectorySeparatorChar)); } cb_scenes_action = "Part 1 of 3: Gathering Scenes List..."; cb_scenes_progress = 2 / 2; List <DatabaseScene> scenes = (database.storedScenesData != null) ? database.storedScenesData : new List <DatabaseScene>(); scenes = scenes.Where(item => item != null).ToList(); EditorBuildSettingsScene[] editorScenes = EditorBuildSettings.scenes; for (int i = 0; i < editorScenes.Length; i++) { string sceneName = editorScenes[i].path.Split('/')[editorScenes[i].path.Split('/').Length - 1]; sceneName = sceneName.Replace(".unity", ""); cb_scenes_action = "Part 2 of 3: Adding Scene: " + sceneName; cb_scenes_progress = i / editorScenes.Length; int foundSceneIndex = scenes.FindIndex(target => target.name == sceneName); if (foundSceneIndex > -1) { scenes[foundSceneIndex].path = editorScenes[i].path; scenes[foundSceneIndex].index = i; scenes[foundSceneIndex].enabled = editorScenes[i].enabled; EditorUtility.SetDirty(scenes[foundSceneIndex]); } else { DatabaseScene newScene = ScriptableObject.CreateInstance <DatabaseScene>(); newScene.name = sceneName; newScene.path = editorScenes[i].path; newScene.sceneName = sceneName; newScene.index = i; newScene.enabled = editorScenes[i].enabled; AssetDatabase.CreateAsset(newScene, string.Format("Assets{0}Resources{0}ScenesDatabase{0}{1}.asset", Path.DirectorySeparatorChar, sceneName)); Debug.Log("Create " + sceneName + " scene asset."); scenes.Add(newScene); Debug.Log("Added " + sceneName + " scene asset to scene database."); } } SetAllLoadPointsInAllScenes(ref scenes); cb_scenes_action = "Part 3 of 3: Saving built database.. "; cb_scenes_progress = 1 / 1; database.storedScenesData = scenes; EditorUtility.SetDirty(database); AssetDatabase.SaveAssets(); cb_scenes_displayProgressBar = false; GameObject roomButton = E_Helpers.GetPrefabReference("Assets/InvectorMultiplayer/UI/RoomButton.prefab"); roomButton.GetComponent <RoomButton>().database = database; E_Helpers.SaveAsPrefab(roomButton, "Assets/InvectorMultiplayer/UI/RoomButton.prefab"); if (EditorUtility.DisplayDialog("Success!", "The scene database has successfully been updated!", "Okay")) { } Debug.Log("Successfully updated the ScenesDatabase!"); }