// Save the current level in an xml file. public void SaveLevel(string boardName) { int index = 0; bricksActive.Clear(); BrickLevel brickLevel = new BrickLevel(); foreach (GameObject b in GameObject.FindGameObjectsWithTag("Brick")) { bricksActive.Add(b); } brickLevel.bricks = new Brick[bricksActive.Count]; foreach (GameObject b in bricksActive) { Brick temp = b.GetComponent <BrickBehaviour>().GetBrick(); brickLevel.bricks[index] = temp; index += 1; } XmlSerializer serializer = new XmlSerializer(typeof(BrickLevel)); string xml; using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, brickLevel); xml = writer.ToString(); } myLevelSave = new XmlDocument(); myLevelSave.LoadXml(xml); myLevelSave.Save(Application.dataPath + "/data/" + boardName + ".xml"); Debug.Log("Saved Level."); }
// Load a level into the current scene. void LoadLevel(TextAsset lvl) { XmlSerializer serializer = new XmlSerializer(typeof(BrickLevel)); StringReader stringReader = new StringReader(lvl.text); using (XmlReader reader = XmlReader.Create(stringReader)) { brickLevel = (BrickLevel)serializer.Deserialize(reader); // Destroy all bricks currently in the arena. foreach (GameObject b in bricksActive) { Destroy(b); } bricksActive.Clear(); // Build new bricks. for (int i = 0; i < brickLevel.bricks.Length; i++) { BrickSpawn(brickLevel.bricks[i], i); } } }