前言
不管开发什么游戏,游戏存档是个必不可少的功能,你可能需要保存玩家的一些信息,比如身上穿戴的装备,玩家角色所处的场景等各种信息,对于存档功能(数据持久化),Unity提供了原生技术Playerprefs,它的优点是理解和使用起来十分简单,缺点是对于大型数据存储时会力不从心,所以本文会介绍如何使用XML来实现游戏存档和存档加密的功能。
编程环境
Unity 5.2.2OS X EI Capitan 10.11.6
你将学到什么?
如何使用XML对数据进行序列化和反序列化操作。如何对数据进行加密和解密操作。不同平台下文件存放的具体路径和规则。
整体思路解析
数据存储和加密的主要逻辑思路:
使用XmlSerializer类对需要保存的数据类进行序列化操作,得到一串字符串。将得到的字符串使用RijndaeManaged类和ICrytoTransform类进行加密操作,获得加密之后的字符串。根据平台类型,确定文件保存的路径。使用StreamWriter类将字符串保存到文件中。
数据加载和解密的主要逻辑思路:
根据存档文件的路径,使用StreamReader类读取文件中的内容(一串加密过的字符串)。使用RijndaeManaged类和ICrytoTransform类对读取的文件内容进行解密操作,获得一串解密后的字符串。使用XmlSerializer类对解密后的字符串进行反序列化操作,获得具体的游戏数据,并使用数据对游戏中的数据进行转换操作。
一、准备工作
在实现具体保存操作前,我们需要先实现我们要保存的游戏数据,本文使用一个简化的数据,假设我们保存的数据是MyPlayer类,里面记录着以下信息:
玩家的名字玩家的等级玩家的武器(包括物品ID,物品名字信息)玩家的衣服(包括物品ID,物品名字信息)
下面我们就来具体实现这些数据,首先我们新建一个Unity工程,工程名字大家可以自定义,然后我们新建一个C#文件,命名为Item,打开item文件,并进行如下编辑:
Item代码
在Item类中,我们定义了两个公共成员,_itemID和_name,分别代表物品的ID和名字。然后我们在构造函数里面初始化了物品ID和名称。最后我们又创建了一个构造函数,可以通过参数来指定Item的id和名字。<