Unity笔记 XML读写 防篡改MD5签名
2015-07-23 11:55
721 查看
XML读写
读取一个xml文件(/Scripts/enemy.xml),得到xml内容+anykey的MD5签名。
写一个xml(/Scripts/enemy_bkp.xml),改ROOT为root。
xml文件
读取一个xml文件(/Scripts/enemy.xml),得到xml内容+anykey的MD5签名。
写一个xml(/Scripts/enemy_bkp.xml),改ROOT为root。
using UnityEngine; using System.Collections; using System.Xml; public class xml_md5 : MonoBehaviour { public ArrayList m_enemylist; public class SpawnData { public int wave = 1; public string enemyname = ""; public int level = 1; public float wait = 1.0f; } string GetMD5(string sDataIn) { System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] bytValue, bytHash; bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn); bytHash = md5.ComputeHash(bytValue); md5.Clear(); string sTemp = ""; for (int i = 0; i < bytHash.Length; i++) { sTemp += bytHash[i].ToString("X").PadLeft(2, '0'); } return sTemp.ToLower(); } // Use this for initialization void Start () { m_enemylist = new ArrayList(); // 读取 xml string filepath = Application.dataPath + @"/Scripts/enemy.xml"; if ( System.IO.File.Exists( filepath ) ) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(filepath); // 得到MD5,但是没干鸟用 string key = "anykey"; string innerstr = xmlDoc.InnerXml + key; string md5hash = GetMD5( innerstr ); XmlNodeList nodes = xmlDoc.SelectSingleNode("ROOT").ChildNodes; foreach ( XmlElement e in nodes ) { SpawnData sd = new SpawnData(); sd.wave = int.Parse( e.Attributes["wave"].Value ); sd.enemyname = e.Attributes["enemyname"].Value; sd.level = int.Parse( e.Attributes["level"].Value ); sd.wait = float.Parse( e.Attributes["wait"].Value ); m_enemylist.Add(sd); } } // 写入 xml string backuppath = Application.dataPath + @"/Scripts/enemy_bkp.xml"; { XmlDocument xmlDoc = new XmlDocument(); XmlDeclaration decl = xmlDoc.CreateXmlDeclaration("1.0","UTF-8","yes"); xmlDoc.AppendChild(decl); XmlElement root = xmlDoc.CreateElement( "root" ); xmlDoc.AppendChild(root); for ( int i = 0; i < m_enemylist.Count; i ++ ) { SpawnData sd = (SpawnData)m_enemylist[i]; XmlElement t = xmlDoc.CreateElement( "table" ); t.SetAttribute( "wave", sd.wave.ToString() ); t.SetAttribute( "enemyname", sd.enemyname ); t.SetAttribute( "level", sd.level.ToString() ); t.SetAttribute( "wait", sd.wait.ToString() ); root.AppendChild(t); } xmlDoc.Save(backuppath); } } }
xml文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ROOT> <table wave="1" enemyname="boar" level="1" wait="3.1"/> <table wave="1" enemyname="boar" level="1" wait="3"/> <table wave="2" enemyname="boar" level="2" wait="4"/> <table wave="2" enemyname="bird" level="2" wait="4"/> <table wave="3" enemyname="boar" level="2" wait="3"/> </ROOT>
相关文章推荐
- Unity3D研究院之Android二次加密.so二次加密DLL(八十二)
- Unity笔记 UGUI RichText 文字表情图片
- Unity3D项目
- Unity3D逻辑热更新,第二代舒爽解决方案,L#使用简介
- [Unity3D]脚本中Start()和Awake()的区别
- 所有游戏开发者需要用心领悟的15个指标
- Unity3D之文件读写文件
- unity3d-carwaypoints插件优点
- 关于在Unity中启用外部的exe
- CellularAutomation(细胞自动机)
- 自己写的UnitY实用小工具或脚本——AR阴影以及Mask遮挡
- Unity3D中的屏幕着色器和图像特效
- Unity3D基础
- Unity3D学习笔记-----2015-07-22(Unity3D基本使用)
- unity绘制线和绘制面
- unity mobile First Person Controls not work
- Unity3D 5.0版本 加载dll报错, 换用4.5 版本可以正确运行与导出(x86版本)
- (23)unity4.6学习Ugui中国文档-------非官方Demo1
- unity针对iphone的屏幕旋转
- unity音频组件