/// <summary> /// Display Dialog to add a scene to build settings /// </summary> static public void AddBuildScene(BuildScene buildScene, bool force = false, bool enabled = true) { if (force == false) { int selection = EditorUtility.DisplayDialogComplex( "Add Scene To Build", "You are about to add scene at " + buildScene.assetPath + " To the Build Settings.", "Add as Enabled", // option 0 "Add as Disabled", // option 1 "Cancel (do nothing)"); // option 2 switch (selection) { case 0: // enabled enabled = true; break; case 1: // disabled enabled = false; break; default: case 2: // cancel return; } } EditorBuildSettingsScene newScene = new EditorBuildSettingsScene(buildScene.assetGUID, enabled); List <EditorBuildSettingsScene> tempScenes = EditorBuildSettings.scenes.ToList(); tempScenes.Add(newScene); EditorBuildSettings.scenes = tempScenes.ToArray(); }
/// <summary> /// For a given Scene Asset object reference, extract its build settings data, including buildIndex. /// </summary> public static BuildScene GetBuildScene(Object sceneObject) { var entry = new BuildScene { BuildIndex = -1, AssetGuid = new GUID(string.Empty) }; if (sceneObject as SceneAsset == null) { return(entry); } entry.AssetPath = AssetDatabase.GetAssetPath(sceneObject); entry.AssetGuid = new GUID(AssetDatabase.AssetPathToGUID(entry.AssetPath)); var scenes = EditorBuildSettings.scenes; for (var index = 0; index < scenes.Length; ++index) { if (!entry.AssetGuid.Equals(scenes[index].guid)) { continue; } entry.Scene = scenes[index]; entry.BuildIndex = index; return(entry); } return(entry); }
/// <summary> /// For a given Scene Asset object reference, extract its build settings data, including buildIndex. /// </summary> static public BuildScene GetBuildScene(Object sceneObject) { BuildScene entry = new BuildScene() { buildIndex = -1, assetGUID = new GUID(string.Empty) }; if (sceneObject as SceneAsset == null) { return(entry); } entry.assetPath = AssetDatabase.GetAssetPath(sceneObject); entry.assetGUID = new GUID(AssetDatabase.AssetPathToGUID(entry.assetPath)); for (int index = 0; index < EditorBuildSettings.scenes.Length; ++index) { if (entry.assetGUID.Equals(EditorBuildSettings.scenes[index].guid)) { entry.scene = EditorBuildSettings.scenes[index]; entry.buildIndex = index; return(entry); } } return(entry); }
/// <summary> /// Display Dialog to remove a scene from build settings (or just disable it) /// </summary> public static void RemoveBuildScene(BuildScene buildScene, bool force = false) { bool onlyDisable = false; if (force == false) { int selection = -1; const string title = "Remove Scene From Build"; string details = "You are about to remove the following scene from build settings:\n" + $"{buildScene.assetPath}\n" + $"buildIndex: {buildScene.buildIndex}" + "\n\nThis will modify build settings, but the scene asset will remain untouched."; string confirm = "Remove From Build"; string alt = "Just Disable"; string cancel = "Cancel (do nothing)"; if (buildScene.scene.enabled) { details += "\n\nIf you want, you can also just disable it instead."; selection = EditorUtility.DisplayDialogComplex(title, details, confirm, alt, cancel); } else { selection = EditorUtility.DisplayDialog(title, details, confirm, cancel) ? 0 : 2; } switch (selection) { case 0: // remove break; case 1: // disable onlyDisable = true; break; default: return; } } // User chose to not remove, only disable the scene if (onlyDisable) { SetBuildSceneState(buildScene, false); } // User chose to fully remove the scene from build settings else { List <EditorBuildSettingsScene> tempScenes = EditorBuildSettings.scenes.ToList(); tempScenes.RemoveAll(scene => scene.guid.Equals(buildScene.assetGUID)); EditorBuildSettings.scenes = tempScenes.ToArray(); } }
public bool TryGetBuildScene(string sceneName, out BuildScene buildScene) { for (int i = 0; i < _buildScenes.Count; i++) { if (_buildScenes [i]._sceneName == sceneName) { buildScene = _buildScenes [i]; return true; } } buildScene = new BuildScene (); return false; }
private void Awake() { if (instance == null) { instance = this; } else if (instance != this) { Destroy(gameObject); } AddScenes(); StartCoroutine(LoadYourAsyncScene(buildMainScene, LoadSceneMode.Single)); }
/// <summary> Enable/Disable a given scene in the buildSettings </summary> public static void SetBuildSceneState(BuildScene buildScene, bool enabled) { var modified = false; var scenesToModify = EditorBuildSettings.scenes; foreach (var curScene in scenesToModify.Where(curScene => curScene.guid.Equals(buildScene.assetGUID))) { curScene.enabled = enabled; modified = true; break; } if (modified) { EditorBuildSettings.scenes = scenesToModify; } }
/// <summary> /// Enable/Disable a given scene in the buildSettings /// </summary> static public void SetBuildSceneState(BuildScene buildScene, bool enabled) { bool modified = false; EditorBuildSettingsScene[] scenesToModify = EditorBuildSettings.scenes; foreach (var curScene in scenesToModify) { if (curScene.guid.Equals(buildScene.assetGUID)) { curScene.enabled = enabled; modified = true; break; } } if (modified) { EditorBuildSettings.scenes = scenesToModify; } }
protected override JobHandle OnUpdate(JobHandle inputDeps) { var arrayEntity = m_Query.ToEntityArray(Allocator.TempJob); prefabEntity = arrayEntity[0]; BuildScene buildScene = new BuildScene { commandBuffer = endSimulationEntityCommandBufferSystem.CreateCommandBuffer().ToConcurrent(), prefabEntity = prefabEntity }; arrayEntity.Dispose(); inputDeps = buildScene.Schedule(this, inputDeps); endSimulationEntityCommandBufferSystem.AddJobHandleForProducer(inputDeps); return(inputDeps); }
/// <summary> Display Dialog to remove a scene from build settings (or just disable it) </summary> public static void RemoveBuildScene(BuildScene buildScene, bool force = false) { if (force == false) { bool selection = EditorUtility.DisplayDialog( "Add Scene To Build", "Are you sure you want to remove " + buildScene.assetPath + " at index " + buildScene.buildIndex + " from the Build Settings?", "Yes", "No"); if (!selection) { return; } } List <EditorBuildSettingsScene> tempScenes = EditorBuildSettings.scenes.ToList(); tempScenes.RemoveAll(scene => scene.guid.Equals(buildScene.assetGUID)); EditorBuildSettings.scenes = tempScenes.ToArray(); }
/// <summary> Enable/Disable a given scene in the buildSettings. </summary> public static void SetBuildSceneState(BuildScene buildScene, bool enabled) { bool modified = false; EditorBuildSettingsScene[] scenesToModify = EditorBuildSettings.scenes; for (int i = 0; i < scenesToModify.Length; i++) { EditorBuildSettingsScene curScene = scenesToModify[i]; if (curScene.guid.Equals(buildScene.assetGUID)) { curScene.enabled = enabled; modified = true; break; } } if (modified) { EditorBuildSettings.scenes = scenesToModify; } }
/// <summary> Display Dialog to remove a scene from build settings (or just disable it) </summary> public static void RemoveBuildScene(BuildScene buildScene) { if (!EditorUtility.DisplayDialog( "Remove Scene From Build", $"You are about to remove the following scene from build settings:\n{buildScene.assetPath}\nBuild index:{buildScene.buildIndex}\n\nThis will modify build settings, but the scene asset will remain untouched.", "Remove From Build", "Cancel" )) { return; } // User chose to fully remove the scene from build settings else { var tempScenes = EditorBuildSettings.scenes.ToList(); tempScenes.RemoveAll(scene => scene.guid.Equals(buildScene.assetGUID)); EditorBuildSettings.scenes = tempScenes.ToArray(); } }
public void LoadFromBuildSettings() { #if UNITY_EDITOR _buildScenes.Clear (); for (int i=0; i<UnityEditor.SceneManagement.EditorSceneManager.sceneCountInBuildSettings; i++) { BuildScene buildScene = new BuildScene (); SceneAsset sceneFile = AssetDatabase.LoadAssetAtPath<SceneAsset> (EditorBuildSettings.scenes[i].path); buildScene._sceneName = sceneFile.name; buildScene._index = i; var prefPath = System.IO.Path.Combine (_sceneRootPrefabsPath, sceneFile.name+"(Root)"); buildScene._rootPrefabPath = prefPath.Replace ("Assets/Resources/", ""); buildScene._rootPrefab = AssetDatabase.LoadAssetAtPath<GameObject> (prefPath + ".prefab"); prefPath = System.IO.Path.Combine (_sceneRootPrefabsPath.Replace ("Root", "UI"), sceneFile.name+"(UI)"); buildScene._uiPrefabPath = prefPath.Replace ("Assets/Resources/", ""); buildScene._uiPrefab = AssetDatabase.LoadAssetAtPath<GameObject> (prefPath + ".prefab"); buildScene._sceneFile = sceneFile; _buildScenes.Add (buildScene); } #endif }
/// <summary> Display Dialog to add a scene to build settings </summary> public static void AddBuildScene(BuildScene buildScene, bool force = false, bool enabled = true) { if (force == false) { bool selection = EditorUtility.DisplayDialog( "Add Scene To Build", "Are you sure you want to add " + buildScene.assetPath + " to the Build Settings?", "Yes", "No"); if (!selection) { return; } } EditorBuildSettingsScene newScene = new EditorBuildSettingsScene(buildScene.assetGUID, enabled); List <EditorBuildSettingsScene> tempScenes = EditorBuildSettings.scenes.ToList(); tempScenes.Add(newScene); EditorBuildSettings.scenes = tempScenes.ToArray(); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { var sceneAssetProperty = GetSceneAssetProperty(property); position.height = lineHeight; EditorGUI.BeginProperty(position, GUIContent.none, property); EditorGUI.BeginChangeCheck(); int sceneControlID = GUIUtility.GetControlID(FocusType.Passive); var selectedObject = EditorGUI.ObjectField(position, label, sceneAssetProperty.objectReferenceValue, typeof(SceneAsset), false); BuildScene buildScene = GetBuildScene(selectedObject); if (EditorGUI.EndChangeCheck()) { sceneAssetProperty.objectReferenceValue = selectedObject; if (buildScene.scene == null) { GetScenePathProperty(property).stringValue = string.Empty; } } position.y += paddedLine; EditorGUI.EndProperty(); }
void Awake() { m_Instance = this; }