整体思路解析
数据存储和加密的主要逻辑思路:
使用XmlSerializer类对需要保存的数据类进行序列化操作,得到一串字符串。
将得到的字符串使用RijndaeManaged类和ICrytoTransform类进行加密操作,获得加密之后的字符串。
根据平台类型,确定文件保存的路径。
使用StreamWriter类将字符串保存到文件中。
数据加载和解密的主要逻辑思路:
根据存档文件的路径,使用StreamReader类读取文件中的内容(一串加密过的字符串)。
使用RijndaeManaged类和ICrytoTransform类对读取的文件内容进行解密操作,获得一串解密后的字符串。
使用XmlSerializer类对解密后的字符串进行反序列化操作,获得具体的游戏数据,并使用数据对游戏中的数据进行转换操作。
具体实现
首先创建XmlManager类,此类用来序列化与写入操作:
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using UnityEngine;
public class XmlManager {
/// <summary>
/// 加密和解密秘钥
/// </summary>
byte[] _keyArray = UTF8Encoding.UTF8.GetBytes("12348578902329367887724456789012");
public bool HasFlie(string flieName)
{
return File.Exists(flieName);
}
/// <summary>
/// 创建XML
/// </summary>
/// <param name="flieName"></param>
/// <param name="dataString"></param>
public void CreateXML(string flieName, String dataString)
{
StreamWriter writer;
writer = File.CreateText(flieName);
writer.Write(/*dataString*/Encrypt(dataString));
writer.Close();
}
/// <summary>
/// 加载XML
/// </summary>
/// <param name="flieName"></param>
/// <returns></returns>
public string LoadXML(string flieName)
{
StreamReader reader = File.OpenText(flieName);
string dataString = reader.ReadT