public static void SaveLevel() { //read all prefabs in the scene foreach (IsPrefab go in FindObjectsOfType <IsPrefab>()) { LevelInfo.ElementsInLevel elementInLevel = new LevelInfo.ElementsInLevel(go.name, go.transform.position, go.transform.rotation); elements.Add(elementInLevel); } //insert the info into the current level LevelDesignerWindow.currentLevelInfo.elementsInLevel = elements; //read the json file and convert it to the levels //TextAsset jsonFilePath = Resources.Load("Json_Level_List") as TextAsset; //levels = JsonUtility.FromJson<ListOfLevelInfoClass>(jsonFilePath.text).levels; levels = LevelDesignerWindow.ReadFromListJsonFile(); if (levels == null) { levels = new List <LevelInfo>(); } if (levels.Exists(x => x.levelIndex == LevelDesignerWindow.currentLevelInfo.levelIndex)) { Debug.Log("it's exist"); levels[LevelDesignerWindow.currentLevelInfo.levelIndex] = LevelDesignerWindow.currentLevelInfo; } else { levels.Add(LevelDesignerWindow.currentLevelInfo); } //adding the current level to the levels ListOfLevelInfoClass listOfLevels = new ListOfLevelInfoClass(levels); //write the levels list back to the json file json = JsonUtility.ToJson(listOfLevels); File.WriteAllText(LevelDesignerWindow.levelsListJson, json); Debug.Log("Level saved"); AssetDatabase.Refresh(); }
//delete a specific level and reorder the levels indexes static void DeleteLevel(int levelIndex) { levels = ReadFromListJsonFile(); string deletedLevelName = levels[levelIndex].levelName; if (levels.Remove(levels[levelIndex])) { for (int i = 0; i < levels.Count; i++) { levels[i].levelIndex = i; } ListOfLevelInfoClass levelsWithoutLevel = new ListOfLevelInfoClass(levels); string json = JsonUtility.ToJson(levelsWithoutLevel); File.WriteAllText(levelsListJson, json); AssetDatabase.Refresh(); Debug.Log("delete " + deletedLevelName + " Level"); } else { Debug.Log("Can't find the level, Error!"); } }