/// <summary> /// For a given Scene Asset object reference, extract its build settings data, including buildIndex. /// </summary> public static EditorBuildScene GetBuildScene(Object sceneAssetObject) { EditorBuildScene bSceneInfo = new EditorBuildScene { buildIndex = -1, assetGUID = new GUID(string.Empty) }; if (sceneAssetObject as SceneAsset == null) { return(bSceneInfo); } bSceneInfo.assetPath = AssetDatabase.GetAssetPath(sceneAssetObject); bSceneInfo.assetGUID = new GUID(AssetDatabase.AssetPathToGUID(bSceneInfo.assetPath)); var scenes = EditorBuildSettings.scenes; for (var index = 0; index < scenes.Length; ++index) { if (bSceneInfo.assetGUID.Equals(scenes[index].guid)) { bSceneInfo.scene = scenes[index]; bSceneInfo.buildIndex = index; return(bSceneInfo); } } return(bSceneInfo); }
public static void RemoveSceneFromBuild(ref EditorBuildScene editorBuildScene) { List <EditorBuildSettingsScene> buildScenesList = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes); buildScenesList.RemoveAt(editorBuildScene.buildIndex); EditorBuildSettings.scenes = buildScenesList.ToArray(); editorBuildScene.buildIndex = -1; editorBuildScene.scene = null; }
public static void SetBuildIndex(ref EditorBuildScene editorBuildScene, int buildIndex) { buildIndex = Mathf.Clamp(buildIndex, -1, EditorBuildSettings.scenes.Length - 1); if (buildIndex >= 0) { List <EditorBuildSettingsScene> buildScenesList = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes); EditorBuildSettingsScene ebsScene = buildScenesList[editorBuildScene.buildIndex]; buildScenesList.RemoveAt(editorBuildScene.buildIndex); buildScenesList.Insert(buildIndex, ebsScene); EditorBuildSettings.scenes = buildScenesList.ToArray(); editorBuildScene.buildIndex = buildIndex; editorBuildScene.scene = EditorBuildSettings.scenes[buildIndex]; } else { RemoveSceneFromBuild(ref editorBuildScene); } }