Uinty利用XML来本地保存场景中的数据

原创 2016年06月02日 10:22:26

上一篇写了关于创建、读取、修改、添加的操作,现在来一下实战

using UnityEngine;
using System.Collections;

//不要忘记添加命名空间
using System.Xml;
using System.IO;

public class XMLDemo2 : MonoBehaviour {

    public GameObject qiu;
    public GameObject zhengFang;
    public GameObject yuanzhu;
    GameObject dd;

    string path;

    // Use this for initialization
    void Start () {
        dd = GameObject.Find("tt");
        path = Application.dataPath + "/yangyong.xml";

    }

    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButtonDown(0)) {
            //保存目标物体到XML文件中
            Save();
            clearScene();
        }

        if (Input.GetMouseButtonDown(1)) {
            huifu();
        }
    }

    void Save(){
        XmlDocument xd = new XmlDocument();
        XmlNode root = xd.CreateElement("root");
        xd.AppendChild(root);
        foreach (Transform t in dd.transform) {
            if (t.gameObject.tag == "qiu") {
                XmlElement yuan01 = xd.CreateElement("qiu");
                yuan01.SetAttribute("posX", t.transform.position.x.ToString());
                yuan01.SetAttribute("posY", t.transform.position.y.ToString());
                yuan01.SetAttribute("posZ", t.transform.position.z.ToString());
                yuan01.SetAttribute("rotX", t.transform.localEulerAngles.x.ToString());
                yuan01.SetAttribute("rotY", t.transform.localEulerAngles.y.ToString());
                yuan01.SetAttribute("rotZ", t.transform.localEulerAngles.z.ToString());
                yuan01.SetAttribute("scaX", t.transform.localScale.x.ToString());
                yuan01.SetAttribute("scaY", t.transform.localScale.y.ToString());
                yuan01.SetAttribute("scaZ", t.transform.localScale.z.ToString());

                root.AppendChild(yuan01);
            }

            if (t.gameObject.tag == "zhengfang") {
                XmlElement yuan01 = xd.CreateElement("zhengfang");
                yuan01.SetAttribute("posX", t.transform.position.x.ToString());
                yuan01.SetAttribute("posY", t.transform.position.y.ToString());
                yuan01.SetAttribute("posZ", t.transform.position.z.ToString());
                yuan01.SetAttribute("rotX", t.transform.localEulerAngles.x.ToString());
                yuan01.SetAttribute("rotY", t.transform.localEulerAngles.y.ToString());
                yuan01.SetAttribute("rotZ", t.transform.localEulerAngles.z.ToString());
                yuan01.SetAttribute("scaX", t.transform.localScale.x.ToString());
                yuan01.SetAttribute("scaY", t.transform.localScale.y.ToString());
                yuan01.SetAttribute("scaZ", t.transform.localScale.z.ToString());
                root.AppendChild(yuan01);
            }


            if (t.gameObject.tag == "yuanzhu")
            {
                XmlElement yuan01 = xd.CreateElement("yuanzhu");
                yuan01.SetAttribute("posX", t.transform.position.x.ToString());
                yuan01.SetAttribute("posY", t.transform.position.y.ToString());
                yuan01.SetAttribute("posZ", t.transform.position.z.ToString());
                yuan01.SetAttribute("rotX", t.transform.localEulerAngles.x.ToString());
                yuan01.SetAttribute("rotY", t.transform.localEulerAngles.y.ToString());
                yuan01.SetAttribute("rotZ", t.transform.localEulerAngles.z.ToString());
                yuan01.SetAttribute("scaX", t.transform.localScale.x.ToString());
                yuan01.SetAttribute("scaY", t.transform.localScale.y.ToString());
                yuan01.SetAttribute("scaZ", t.transform.localScale.z.ToString());
                root.AppendChild(yuan01);
            }
        }

        if (!File.Exists(path)) {
            xd.Save(path);
        }
    }
    void clearScene() {
        dd.SetActive(false);
    }

    void huifu() {
        XmlDocument aa = new XmlDocument();
        aa.Load(path);
        XmlNode root = aa.DocumentElement;
        XmlNodeList list = root.ChildNodes;

        foreach (XmlElement node in list) {
            if (node.Name == "zhengfang") {
                GameObject object1 = Instantiate(zhengFang) as GameObject;
                float posX = float.Parse(node.GetAttribute("posX"));
                float posY = float.Parse(node.GetAttribute("posY"));
                float posZ = float.Parse(node.GetAttribute("posZ"));
                float rotX = float.Parse(node.GetAttribute("rotX"));
                float rotY = float.Parse(node.GetAttribute("rotY"));
                float rotZ = float.Parse(node.GetAttribute("rotZ"));
                float scaX = float.Parse(node.GetAttribute("scaX"));
                float scaY = float.Parse(node.GetAttribute("scaY"));
                float scaZ = float.Parse(node.GetAttribute("scaZ"));

                object1.transform.position = new Vector3(posX,posY,posZ);
                object1.transform.eulerAngles = new Vector3(rotX, rotY, rotZ);
                object1.transform.localScale = new Vector3(scaX, scaY, scaZ);
            }

            if (node.Name == "yuanzhu")
            {
                GameObject object1 = Instantiate(zhengFang) as GameObject;
                float posX = float.Parse(node.GetAttribute("posX"));
                float posY = float.Parse(node.GetAttribute("posY"));
                float posZ = float.Parse(node.GetAttribute("posZ"));
                float rotX = float.Parse(node.GetAttribute("rotX"));
                float rotY = float.Parse(node.GetAttribute("rotY"));
                float rotZ = float.Parse(node.GetAttribute("rotZ"));
                float scaX = float.Parse(node.GetAttribute("scaX"));
                float scaY = float.Parse(node.GetAttribute("scaY"));
                float scaZ = float.Parse(node.GetAttribute("scaZ"));

                object1.transform.position = new Vector3(posX, posY, posZ);
                object1.transform.eulerAngles = new Vector3(rotX, rotY, rotZ);
                object1.transform.localScale = new Vector3(scaX, scaY, scaZ);
            }

            if (node.Name == "qiu")
            {
                GameObject object1 = Instantiate(zhengFang) as GameObject;
                float posX = float.Parse(node.GetAttribute("posX"));
                float posY = float.Parse(node.GetAttribute("posY"));
                float posZ = float.Parse(node.GetAttribute("posZ"));
                float rotX = float.Parse(node.GetAttribute("rotX"));
                float rotY = float.Parse(node.GetAttribute("rotY"));
                float rotZ = float.Parse(node.GetAttribute("rotZ"));
                float scaX = float.Parse(node.GetAttribute("scaX"));
                float scaY = float.Parse(node.GetAttribute("scaY"));
                float scaZ = float.Parse(node.GetAttribute("scaZ"));

                object1.transform.position = new Vector3(posX, posY, posZ);
                object1.transform.eulerAngles = new Vector3(rotX, rotY, rotZ);
                object1.transform.localScale = new Vector3(scaX, scaY, scaZ);
            }

        }

    }

}

这里写图片描述

最后xml文件的数据

这里写图片描述

QQ群:470841727

版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:http://blog.csdn.net/yy763496668

相关文章推荐

unity里利用C# 读写XML

在开发中,我们经常有遇到要处理大量字符串的情况,这时候XML就起到了非常重要的作用。C# 中是如何处理XML的呢,下面我们通过一些简单的例子代码去认识了解一下。 XML的读取: 这里我随便...

Unity中的XML文件创建,读取,修改,添加

今天在工作之余看了关于unity中关于XML的部分。在这里要注意添加两个命名空间using System.Xml; using System.IO;一个是对XML文件的命名空间,里面有关xml的很多a...

Unity构建读取XML简单架构的方法与注意事项

讲道理这是本宅第一次写原创技术文章,且文中全部内容均为本人拙劣的技术方法实现,若有各种疑问和错误,欢迎及时指正。 绝大部分有点规模的游戏都需要读取XML,且XML数量并不少,如果每次需要数据时...

unity3d使用Mono.Xml读取xml

unity3d读取xml有好几种方式,最简单是直接利用System.Xml读取xml,但是项目打包会比较大,增加了1M的资源占用。另外两个是利用其他轻量级xml库来实现,如Mono.Xml、XMLPa...

Unity3D C# 读写XML

效果 代码 using UnityEngine; using System.IO; using System.Xml; using System.Collections; public c...

Unity3D读取XML文档信息

using System; using UnityEngine; using System.IO; using System.Xml; using System.Linq; using System....

在Unity3D中使用C#如何进行XML文件的读写

在程序有时候需要从文本中读取数据,或者把数据保存到文件中,使用XML文件来存储数据是一个不错的选择。下面介绍一下在Unity3D中使用C#如何进行XML文件的读写。 1、需要引入的包 ...

unity3d使用Mono.Xml读取xml

unity3d读取xml有好几种方式,最简单是直接利用c#读取xml,但是项目打包可能有点大。另外两个是利用其他轻量级xml库来实现,如Mono.Xml、XMLParser。Mono.Xml是c#写的...

unity3d学习笔记(十六)--unity3d读取plist或xml文件

前一篇文章介绍了协同异步加载游戏场景,但前台没干活,浪费了。有的游戏在loading的时候会把一些游戏的Tips(小提示)介绍给玩家,我这里说一下是怎么实现的。 说到小提示,其实是后台有个配置文件,里...

关于Unity的几种XML读取方式

最近在用Unity做手机游戏,其中关卡解锁信息需要用xml保存 那么问题就来了,Unity有多种路径操作的方法,但是对于移动端,有的方法只能读不能写…… 于是我去上网查了点资料 (参考资料:http:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)