存储Position和Rotation到XML中需要时读取

  当初记得这是个很重要的功能来着,写完就忘记是什么用了尴尬

一个保存一个读取;

  using System;

using System.Collections.Generic;
using System.IO;
using System.Xml;

using UnityEngine;

string saveAnimationPath = Application.dataPath + "/Resources/Scene/TeachFire1/Script/CameraState.xml";



    public void SaveCameraPositionToXML(Transform tran)
    {
        //检测xml是否存在  
        if (File.Exists(saveAnimationPath))
        {
            //新建实例  
            XmlDocument xmlDoc = new XmlDocument();
            //根据路径将xml读取出来  
            xmlDoc.Load(saveAnimationPath);
            //得到根节点  
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("root").ChildNodes;
            //遍历所有子节点  
            foreach (XmlElement xe in nodeList)
            {
                if (xe.Name != tran.name)
                    continue;
                foreach (XmlElement x2 in xe.ChildNodes)
                {
                    //更新值  
                    if (x2.Name == "ClipName") x2.InnerText = tran.name;
                    if (x2.Name == "PositionX") x2.InnerText = tran.position.x.ToString();
                    if (x2.Name == "PositionY") x2.InnerText = tran.position.y.ToString();
                    if (x2.Name == "PositionZ") x2.InnerText = tran.position.z.ToString();
                    if (x2.Name == "QuaternionX") x2.InnerText = tran.rotation.x.ToString();
                    if (x2.Name == "QuaternionY") x2.InnerText = tran.rotation.y.ToString();
                    if (x2.Name == "QuaternionZ") x2.InnerText = tran.rotation.z.ToString();
                    if (x2.Name == "QuaternionW") x2.InnerText = tran.rotation.w.ToString();
                }
            }
            Debug.Log("SaveXML OK!");
            xmlDoc.Save(saveAnimationPath);
        }
        else
        {
            throw new NullReferenceException("No XML");
        }
    }


    public void ReadCameraPositionToXML(Transform tran)
    {
        float px, py, pz;
        float rx, ry, rz, rw;
        rx = ry = rz = rw = px = py = pz = 0;
        //检测xml是否存在  
        if (File.Exists(saveAnimationPath))
        {
            //新建实例  
            XmlDocument xmlDoc = new XmlDocument();
            //根据路径将xml读取出来  
            xmlDoc.Load(saveAnimationPath);
            //得到根节点  
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("root").ChildNodes;
            //遍历所有子节点  
            foreach (XmlElement xe in nodeList)
            {
                if (xe.Name != tran.name)
                    continue;
                foreach (XmlElement x2 in xe.ChildNodes)
                {
                    //更新值  
                    if (x2.Name == "ClipName") tran.name = x2.InnerText;
                    if (x2.Name == "PositionX") px = float.Parse(x2.InnerText);
                    if (x2.Name == "PositionY") py = float.Parse(x2.InnerText);
                    if (x2.Name == "PositionZ") pz = float.Parse(x2.InnerText);
                    tran.position = new Vector3(px, py, pz);
                    if (x2.Name == "QuaternionX") rx = float.Parse(x2.InnerText);
                    if (x2.Name == "QuaternionY") ry = float.Parse(x2.InnerText);
                    if (x2.Name == "QuaternionZ") rz = float.Parse(x2.InnerText);
                    if (x2.Name == "QuaternionW") rw = float.Parse(x2.InnerText);
                    tran.rotation = new Quaternion(rx, ry, rz, rw);
                }
            }
            Debug.Log("RecordXML OK!");
        }
        else
        {
            throw new NullReferenceException("No XML");
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值