var saveButtonRect = new Rect(Screen.width - 110,Screen.height - 60, 100, 50); if (GUI.Button(saveButtonRect, "Save", mRightButtonStyle.Value)) { var infos = new List<LevelItemInfo>(transform.childCount); foreach (Transform child in transform) { infos.Add(new LevelItemInfo() { Name = child.name, X = child.position.x, Y = child.position.y }); } var document = new XmlDocument(); var declaration = document.CreateXmlDeclaration("1.0", "UTF-8",""); document.AppendChild(declaration);
var level = document.CreateElement("Level"); document.AppendChild(level);
foreach (var levelItemInfo in infos) { var levelItem = document.CreateElement("LevelItem"); levelItem.SetAttribute("name", levelItemInfo.Name); levelItem.SetAttribute("x", levelItemInfo.X.ToString()); levelItem.SetAttribute("y", levelItemInfo.Y.ToString()); level.AppendChild(levelItem); } //可以用下面的代码输出Xml来查看保存的内容 //Debug.Log(docement.InnerXml);//输出的Xml不带排版,比较杂乱 //或者使用下面的方法 StringBuilder stringBuilder = new StringBuilder(); using(StringWriter stringWriter = new StringWriter(stringBuilder)) { using(XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter)) { xmlTextWriter.Formatting = Formatting.Indented; level.WriteTo(xmlTextWriter); Debug.Log(stringWriter.ToString()); } } //观察验证保存内容无误后,删除查看Xml的代码 }
var levelNode = document.SelectSingleNode("Level");
foreach (XmlElement levelItemNode in levelNode.ChildNodes) { var ItemArrtibutes = levelItemNode.Attributes; var levelItemName = ItemArrtibutes["name"].Value; var levelItemX = int.Parse(ItemArrtibutes["x"].Value); var levelItemY = int.Parse(ItemArrtibutes["y"].Value);
var levelItemPrefab = Resources.Load<GameObject>(levelItemName); var levelItemGameobject = Instantiate(levelItemPrefab, transform); levelItemGameobject.transform.position = new Vector3(levelItemX, levelItemY, 0); } } privatevoidOnGUI() { if(mCurrentState == State.Selection) { var filePaths = Directory.GetFiles(mLevelFilesFolder);
int y = 10;//每有一个存档,就多向下绘制一个按钮
foreach (var filePath in filePaths.Where(f => f.EndsWith("xml"))) { var fileName = Path.GetFileName(filePath);
if (GUI.Button(new Rect(10, y, 100, 40), fileName))//根据场景名字绘制按钮 { var xml = File.ReadAllText(filePath); Debug.Log(xml); ParseAndRun(xml); mCurrentState = State.Playing; }