游戏中提供很多可供配置的设置,有利用适应多种不同的硬件配置,也有利于适应用不同玩家的操作习惯.
如果每次进游戏的话都要重设一次,这显然就失去了配置的意义,不如用一个适用范围比较广的默认值算了.
所以,配置需要保存.
windows中就有众多的的ini文件,还有一些软件会把信息存入注册表.但是,当配置信息较多或是对安全性有所考虑时,这就不太适合了.而且,解析ini文件(或XML)等文本格式的配置,也是一件比较麻烦的事.另一种比较方便的方法就是采用二进制存储,直接把内存中的数据转储,下次用的时候再重新读回来,就像XP的休眠功能一样.
跟其他语言不同,C++本身并没有提供序列化的支持.不过这也给了我们自由发挥的空间,呵呵
比如,你用一个struct来存储某些配置:
structGameConfig
{
bytex;
bytey;
}config;
简单地保存到文件的方法就是直接用流输出:
usingnamespacestd;
ofstreamoutfile("config.cfg",ios::out|ios::binary);
if(outfile)
{
outfile.write((char*)&config,sizeof(GameConfig));
outfile.close();
}
下次直接读取到结构体里就可以了:
usingnamespacestd;
ifstreaminfile("config.cfg",ios::in|ios::binary);
if(infile)
{
infile.read((char*)&config,sizeof(GameConfig));
infile.close();
}
不过这样有个缺点,就是一旦结构体改变,存档数据就没法用了.所以,文件头还需要一些信息来描术这个配置文件,比如文件版本,文件配置数目等等,读取的时候按byte一个个的读,这样就可以兼容老的版本数据,做出合适的处理了.
分享到:
相关推荐
通常我们在进行软件或者游戏开发的时候,需要用excel表格来配置一些参数,但是直接将各表存于工程中显然会占用大量空间,这时候我们可以通过把数据都序列化存在文本文件中,使用时再反序列化出来,既可以减少空间,...
数据持久化从某种意义上来说,就是序列化和反序列化化的过程。在.NET中我们可以将对象序列化为Xml、Json、二进制。然后通过反序列化重新获得对象。同样,在Android中我们可以通过使用Preferences来存储键值型数
UnityIniExtension UnityIni是一个小型库,用于统一将对象属性序列化为...序列化示例: class PlayerSettings : IniSerializeable { public float maxHealth ; public PlayerSettings () : base ( " player.ini
此解决方案还被设计为模块化,通过定义包含保存数据块的保存对象和通用保存值,使您可以保存Unity可以序列化的任何数据。 (导入时该插件会自动创建所需的所有资源)。 现在该插件已经安装完成,只需创建保存对象...
我自己用C#做的一个类似挖地雷的游戏,适合C#初学者参考一下,保存信息是序列化的不是数据库,也用到了ListView和DataGridView,游戏特色(开始签到,个人帐户,卡片助威,玩家排行,个人排行,管理员特权,商店每周...
Odin 使用我们评级很高的自定义序列化协议,让您既可以继承我们的 SerializedBehaviour、SerializedScriptableObject 等,也可以为您已有的类添加几行新代码,让可以序列化的任何内容都得到序列化。是的,甚至是多态...
Odin 能够完美部署到原有的工作流程中,无需费力的集成工作,让您能够序列化任何内容,并使用 80 多个全新检测器属性、无样板代码和更多功能来使用 Unity! 亮点 - 轻松集成 - 纯编辑器模式 - Odin 编辑器窗口 - ...
Odin 使用我们评级很高的自定义序列化协议,让您既可以继承我们的 SerializedBehaviour、SerializedScriptableObject 等,也可以为您已有的类添加几行新代码,让可以序列化的任何内容都得到序列化。是的,甚至是多态...
Odin 使用我们评级很高的自定义序列化协议,让您既可以继承我们的 SerializedBehaviour、SerializedScriptableObject 等,也可以为您已有的类添加几行新代码,让可以序列化的任何内容都得到序列化。是的,甚至是多态...
Odin 将催化你的 Unity 工作流程,使它轻易地为你和整个团队...Odin 使用我们评级很高的自定义序列化协议,让您既可以继承我们的 SerializedBehaviour、SerializedScriptableObject 等 平台支持: pc/android/ios等
Odin 能够完美部署到原有的工作流程中,无需费力的集成工作,让您能够序列化任何内容,并使用 80 多个全新检测器属性、无样板代码和更多功能来使用 Unity! 轻松集成 - 纯编辑器模式 - Odin 编辑器窗口 - 输入验证 ...
Odin 使用我们评级很高的自定义序列化协议,让您既可以继承我们的 SerializedBehaviour、SerializedScriptableObject 等,也可以为您已有的类添加几行新代码,让可以序列化的任何内容都得到序列化。是的,甚至是多态...
Odin 使用我们评级很高的自定义序列化协议,让您既可以继承我们的 SerializedBehaviour、SerializedScriptableObject 等,也可以为您已有的类添加几行新代码,让可以序列化的任何内容都得到序列化。是的,甚至是多态...
【资源说明】 1. 加载第一个场景 场景开始时将调用以下函数...- **OnValidate:**每当设置脚本的属性时都会调用 OnValidate,包括反序列化对象时,这可能发生在不同的时间 欢迎下载,沟通交流,互相学习,共同进步!
局域网斗地主游戏,内附帮助文档。实现技术多线程,IO流等等。实现能功,多线程聊天,用户注册,序列化保存注册用户,反序列化读取注册用户,密码找回,密保设置等等。一个很强大的MyQQ斗地主程序游戏
古董级工具 构建工具 字节码操作 集群管理 代码分析 编译器...ORM PDF 性能分析 响应式开发库 REST框架 科学计算与分析 搜索引擎 安全 序列化 应用服务器 模板引擎 测试 通用工具库 网络爬虫 Web框架 业务流程管理套件
- 序列化任何对象 - 强大的列表 - 惊人的扩展性 - 调色板 - 字典 - 还有更多! · 轻松集成: Odin 很容易操作,并且不会打破你的已有工作流程。实际上你甚至不需要继承任何东西,也就是说你的现有编辑器将继续与 ...
所有消息传递都是通过JSON序列化完成的,因此可以在客户端类型之间移植。 MSAndroidClient 这是Android客户端项目文件。 MSPC客户端 这是游戏的PC客户端版本。 要求 必须安装RabbitMQ,并在Eclipse中打开项目。 必须...
实体同步框架产品特点自动ECS世界同步客户端-服务器网络模型命令消息系统基于T4的代码生成器,用于创建简洁的API,序列化器,反序列化器和压缩器客户端上的状态缓冲本机内存分配联网由单独的线程处理,与该线程无锁...