예제 #1
0
        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();
                }
            }
        }
예제 #2
0
        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;
        }
예제 #4
0
        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 ();
                }
            }
        }
예제 #5
0
        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;
        }