public static void Commit(LevelsPackage package, System.Action successCb = null, System.Action errorCb = null) { try { List <EditorBuildSettingsScene> buildScenes = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes); List <EditorBuildSettingsScene> levelScenes = new List <EditorBuildSettingsScene>(); List <EditorBuildSettingsScene> buildScenesToRemove = new List <EditorBuildSettingsScene>(); List <LevelMetadata> levelListmetadatasToRemove = new List <LevelMetadata>(); // Check level scenes in original Build Scenes foreach (EditorBuildSettingsScene scene in buildScenes) { if (scene.path.Contains(LevelsPackage.Suffix)) { buildScenesToRemove.Add(scene); } } // Remove level scenes foreach (EditorBuildSettingsScene scene in buildScenesToRemove) { buildScenes.Remove(scene); } // Create Scenes references based on LevelMatadata, and in the process keep track of the ones with null value foreach (LevelMetadata metadata in package.metadataList) { if (metadata.scene != null) { string pathToScene = AssetDatabase.GetAssetPath(metadata.scene); EditorBuildSettingsScene scene = new EditorBuildSettingsScene(pathToScene, true); levelScenes.Add(scene); } else { levelListmetadatasToRemove.Add(metadata); } } // Removing null value metadatas from levelList foreach (LevelMetadata metadata in levelListmetadatasToRemove) { package.metadataList.Remove(metadata); } // Removing duplicated from levelScenes // levelScenes = levelScenes.Distinct().ToList<EditorBuildSettingsScene>(); // Comminting changes buildScenes.AddRange(levelScenes); EditorBuildSettings.scenes = buildScenes.ToArray(); if (successCb != null) { successCb(); } } catch (UnityException) { if (errorCb != null) { errorCb(); } } }
private static void ShowLevelList() { LevelsPackage data = Resources.Load(LevelsPackage.ResourcePath) as LevelsPackage; if (data == null) { data = ScriptableObject.CreateInstance <LevelsPackage> (); AssetDatabase.CreateAsset(data, LevelsPackage.FullPath); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); } Selection.activeObject = data; }
private void OnEnable() { _myTarget = target as LevelsPackage; if (_myTarget.metadataList == null) { _myTarget.metadataList = new List <LevelMetadata> (); _myTarget.metadataList.Add(new LevelMetadata()); } _reorderableList = new ReorderableList(_myTarget.metadataList, typeof(LevelMetadata), true, true, true, true); _reorderableList.drawHeaderCallback += DrawHeader; _reorderableList.drawElementCallback += DrawElement; _reorderableList.onAddCallback += AddItem; _reorderableList.onRemoveCallback += RemoveItem; }
public static void Commit(LevelsPackage package, System.Action successCb = null, System.Action errorCb = null) { try { List<EditorBuildSettingsScene> buildScenes = new List<EditorBuildSettingsScene> (EditorBuildSettings.scenes); List<EditorBuildSettingsScene> levelScenes = new List<EditorBuildSettingsScene> (); List<EditorBuildSettingsScene> buildScenesToRemove = new List<EditorBuildSettingsScene> (); List<LevelMetadata> levelListmetadatasToRemove = new List<LevelMetadata> (); // Check level scenes in original Build Scenes foreach (EditorBuildSettingsScene scene in buildScenes) { if (scene.path.Contains (LevelsPackage.Suffix)) { buildScenesToRemove.Add (scene); } } // Remove level scenes foreach (EditorBuildSettingsScene scene in buildScenesToRemove) { buildScenes.Remove (scene); } // Create Scenes references based on LevelMatadata, and in the process keep track of the ones with null value foreach (LevelMetadata metadata in package.metadataList) { if (metadata.scene != null) { string pathToScene = AssetDatabase.GetAssetPath (metadata.scene); EditorBuildSettingsScene scene = new EditorBuildSettingsScene (pathToScene, true); levelScenes.Add (scene); } else { levelListmetadatasToRemove.Add (metadata); } } // Removing null value metadatas from levelList foreach (LevelMetadata metadata in levelListmetadatasToRemove) { package.metadataList.Remove (metadata); } // Removing duplicated from levelScenes // levelScenes = levelScenes.Distinct().ToList<EditorBuildSettingsScene>(); // Comminting changes buildScenes.AddRange (levelScenes); EditorBuildSettings.scenes = buildScenes.ToArray (); if (successCb != null) { successCb (); } } catch (UnityException) { if (errorCb != null) { errorCb (); } } }
private void OnEnable() { _myTarget = target as LevelsPackage; if (_myTarget.metadataList == null) { _myTarget.metadataList = new List<LevelMetadata> (); _myTarget.metadataList.Add (new LevelMetadata ()); } _reorderableList = new ReorderableList (_myTarget.metadataList, typeof(LevelMetadata), true, true, true, true); _reorderableList.drawHeaderCallback += DrawHeader; _reorderableList.drawElementCallback += DrawElement; _reorderableList.onAddCallback += AddItem; _reorderableList.onRemoveCallback += RemoveItem; }