存储Position和Rotation到XML中需要时读取
来源:互联网 发布:泉立方洗衣片 知乎 编辑:程序博客网 时间:2024/06/03 20:33
当初记得这是个很重要的功能来着,写完就忘记是什么用了
一个保存一个读取;
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");
}
}
- 存储Position和Rotation到XML中需要时读取
- 图像存储到XML数据中,并读取出来
- U3d中xml文件的存储和读取,经典
- 数据存储到文件和从文件中读取数据
- Unity 关于冻结Rotation 和 Position的选项
- xml文件存储和读取数据操作
- 利用XML存储和读取数组
- 程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下:
- c#读取数据库到xml文件中
- sqlserver2005 读取xml文件到 数据库中
- 读取xml文件到内存中
- c#读取xml文件到datagridview中
- xml读取并转存到map中
- XML:将XML读取到TREEVIEW中之递归方法
- 将存储过程写入C#中 有需要时则动态插入到数据库 免得麻烦
- 将存储过程写入C#中 有需要时则动态插入到数据库 免得麻烦
- 在RMS中存储和读取数据
- 在RMS中存储和读取数据
- Cocos2d-js中的简易MVC框架(一)框架简介
- react native 学习笔记-----理解redux的一个极其简单例子
- 计数排序以及计数排序的一种优化
- android App设计的工具+灵感
- Linux学习笔记 --- 预防 rm -rf 问题
- 存储Position和Rotation到XML中需要时读取
- C++拷贝构造函数
- Android面试题整理(1)
- HDU 1907 John 尼姆博奕
- 解析C++中的new、operator new、operator new[]和delete、operator delete、operator delete[](上)
- HDU 5434/BC 54D Reflect
- 无题
- LintCode 通配符匹配
- 消息传递