为什么有些国产RPG不能随时ns存档转移新功能,这功...

人人有功? - RPG & 小人 on iNDIEVOX
正所? - 君子的?星、身高的宿?、美酒的奴?、音?的凶器。
大支最得意?生之一,同?也是大支最欣?...
人人有功? - RPG & 小人 VOX
追?你感?趣的音?人,掌握最新演出、新歌?行?息!
追?和你品味相近的同好,?好一起?音?、看表演吧!
StreamWriter streamWriter = File.CreateText(fileName);
streamWriter.Write(toSave);
streamWriter.Close();
public static object GetData(string fileName,Type pType)
StreamReader streamReader = File.OpenText(fileName);
string data = streamReader.ReadToEnd();
data = RijndaelDecrypt(data, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
streamReader.Close();
return DeserializeObject(data,pType);
Rijndael加密算法
待加密的明文
密钥,长度可以为:64位(byte[8]),128位(byte[16]),192位(byte[24]),256位(byte[32])
iv向量,长度为128(byte[16])
private static string RijndaelEncrypt(string pString, string pKey)
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(pKey);
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(pString);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyA
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
ijndael解密算法
待解密的密文
密钥,长度可以为:64位(byte[8]),128位(byte[16]),192位(byte[24]),256位(byte[32])
iv向量,长度为128(byte[16])
private static String RijndaelDecrypt(string pString, string pKey)
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(pKey);
byte[] toEncryptArray = Convert.FromBase64String(pString);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyA
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
将一个对象序列化为字符串
The object.
private static string SerializeObject(object pObject)
string serializedString = string.E
serializedString = JsonConvert.SerializeObject(pObject);
return serializedS
将一个字符串反序列化为对象
The object.
private static object DeserializeObject(string pString,Type pType)
object deserializedObject = null;
deserializedObject=JsonConvert.DeserializeObject(pString,pType);
return deserializedO
这里我们的密钥是直接写在代码中的,这样做其实是有风险的,因为一旦我们的项目被反编译,我们这里的密钥就变得很不安全了。这里有两种方法,一种是把密钥暴露给外部方法,即在读取数据和写入数据的时候使用同一个密钥即可,而密钥可以采取由机器MAC值生成的方法,这样每台机器上的密钥都是不同的可以防止数据被破解;其次可以采用DLL混淆的方法让反编译者无法看到代码中的内容,这样就无法获得正确的密钥从而无法获得存档里的内容了。
四、最终效果
好了,最后我们来写一个简单的测试脚本:
using UnityE
using System.C
using System.Collections.G
public class TestSave : MonoBehaviour {
定义一个测试类
public class TestClass
public string Name = "张三";
public float Age = 23.0f;
public int Sex = 1;
public List&int& Ints = new List&int& ()
void Start ()
string dirpath = Application.persistentDataPath + "/Save";
IOHelper.CreateDirectory (dirpath);
string filename = dirpath + "/GameData.sav";
TestClass t = new TestClass ();
IOHelper.SetData (filename,t);
TestClass t1 = (TestClass)IOHelper.GetData(filename,typeof(TestClass));
Debug.Log(t1.Name);
Debug.Log(t1.Age);
Debug.Log(t1.Ints);
脚本执行结果:
加密后游戏存档:
好了,这就是今天的内容了,希望大家能够喜欢,有什么问题可以给我留言,谢谢!
感谢风宇冲一文提供相关思路!
喜欢我的博客请记住我的名字:秦元培,我的博客地址是:
转载请注明出处,本文作者:秦元培, 本文出处:
本文已收录于以下专栏:
相关文章推荐
Unity3D游戏开发之数据持久化PlayerPrefs的使用
转载自 本文作者:秦元培,本文出处:http://blog.csdn.net/q...
原文链接:http://blog.csdn.net/qinyuanpei/article/details/
作者:秦元培
原文:/bbs/article-528-1.html
今天想和大家分享的内容是RPG游戏中游戏存档的实现,因为最近在做一个RPG游戏的...
这篇文章已经是我写的XML和JSON应用系列的第三篇了,有了前面两篇的基础。这篇文章读起来应该不是很困难。当然如果你是直接看的这篇文章吃力的话可以先去看看前面两篇文章。 这篇文章主要讲述如何使用对游戏...
unity3d提供了一个用于本地持久化保存与读取的类----PlayerPrefs。工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。
PlayerPref...
这是从一个叫LevelSystem的工程里看到的,其实工程本身简单到不行,不过也看到了点有用的东西。public static void SaveData ()
if (_maxLevels...
如果熟悉flash AS3的同学应该是到shareobject
这个playerprebs跟他是一个意思,都是通过键值对的形式存储本地applicationdata中,熟悉一下里面的几个静态方法就...
Unity3d提供了一个用于本地持久化保存与读取的类----PlayerPrefs。工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。
前面转载的文章介绍过如何利用c#解析json,但实用性有些差,对于游戏大量数据的保存和读取很不方便。这里着重介绍下JsonMapper的使用,可以很简单就实现json格式的数据保存与读取。
以游戏中的...
所有的游戏开发都离不开数据存储的操作,Unity3D也不例外,下面向大家介绍一下Unity3D相关的数据存储方法。
一、PlayerPrefs是Unity系统自带的一种最简单的存储方式,以pli...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

参考资料

 

随机推荐