namespace PublicTools.XMLDataBase { /// /// 基本的数据存储 /// 此数据的管理通常是一些本地数据:例如关卡的信息,玩家的个人信息,成绩分数等等 /// 通关信息,成就等会发生变化的数据。 /// 如果是不变的数据存放在哪里?或者说要跟随版本进行管理的数据存放在游戏资源路径。 /// 跟随服务器进行编辑,修改,维护。 /// 如果升级导致的数据格式变化如何维护?这部分数据如果用户卸载或者重新安装会发生什么变化? /// 数据不会丢,但是数据要发生变化了如何管理?是否要添加版本号进行维护? /// 如何进行数据的安全的升级?无法实现数据的安全升级?为何?如何判断数据已升级? /// public class XFileInfo { /// /// 类名 /// private string tableName; /// /// 对应的文件名 /// /// private string filePath; /// /// 目标路径 /// private string targetPath; /// /// 默认可写,不可写的资源无法克隆,仅可写资源能克隆数据库 /// private bool isCanWrite = false; /// /// 文件对应的MD5码,用来检测是否初始化完成或者是否发生了修改编辑等等 /// 如何防止公共读的资源被外部修改? /// 每次对资源进行编辑记录时,更新对应文件的MD5,每次在进入游戏场景时,先校对数据的MD5 /// 如果存在文件的MD5不一致,即可重置和回退至原系统,并再次更新数据 /// 每次更新MD5记录表后,向游戏数据库插入更新后的MD5值。 /// 校对顺序:先检测校对表,是否存在,如果不存在,则读取源数据。 /// 然后校验校对表是否与系统一致,如果一致开始校验具体的数据。如果存在数据不一致代表此表被修改,则读取源数据并覆盖 /// 更新时,每更新一条数据表,就更新一下MD5表,MD5表更新后,更新游戏数据库,使之与数据进行同步 /// 数据如何被回退呢?只能从头开始,但是不能回退至上一个版本 /// 系统的关键数据如何编辑? /// private string md5; /// /// 标识版本号,如果数据格式发生了变化:一般是大版本的更新 /// 如何保证版本安全更新?不能保证?大版本如何进行安全更新? /// private string version; public string TableName { get => tableName; set => tableName = value; } public string FilePath { get => filePath; set => filePath = value; } public string TargetPath { get => targetPath; set => targetPath = value; } public bool IsCanWrite { get => isCanWrite; set => isCanWrite = value; } public string Md5 { get => md5; set => md5 = value; } public string Version { get => version; set => version = value; } } }