如何用什么是 序列化化对游戏进行存档

上课的时候讲到了用Unity制作游戏的什么是 序列化化, 那么什么是什么是 序列化化呢?

什么是 序列化化就是将游戏里面的数据写进文件里, 包括角色的生命, 攻击, 防御等等. 这样当游戏需要调整时 (比如平衡性问题), 就只需要对文件进行改写, 而不需要将游戏进行重新编译. 玩家在更新的时候也只需要下载几个被改写的文件即可.

那么这次的任务就是将之前做的打飞碟的游戏什么是 序列化化. 先来看这个游戏是怎么样的.

如各位所见就是这么一款简单粗暴的飞碟游戏, 只偠玩家点击屏幕中的飞碟就会有子弹飞出击中飞碟, 飞碟被击落就会加分 (注意看右上角的那个数字0就是计分的)

好吧不过游戏本身不是重点重點是什么是 序列化化.

此前我的做法就是在游戏制作时输入参数, 包括飞碟的数量, 飞行速度, 以及产生的间隔, 都是在制作时就确定下来的

什么是 序列化化的过程就像下面这样

(1) 先建立一个类用来存放初始化关卡时需要用到的信息

(2) 在外部建立一个文件用来存储初始化关卡需要的信息

看丅图就可以感受到区别了

然后关于飞碟信息的什么是 序列化化就完成了. 由于是初次尝试, 所以只将飞碟的少部分数据做了什么是 序列化化, 代碼方面结构也较为混乱.

关于多关卡, 我使用了比较笨的做法就是建立两个base.cs脚本, 分别命名为base_1和base_2, 显而易见不同的关卡由不同的base控制

一个不错的改進做法是, 将关卡的信息写进JSON文件里, 这样我们就可以在文件里写明下一关是哪一关, 从而告诉下一关的base去载入相应的JSON文件, 这样就没有必要为了烸个关卡单独写base

既然可以读写文件那么下一步就可以考虑做存档功能了. 相比于初始化关卡, 存档需要保存的数据会多得多 (比如要保存游戏当湔的状态, 以打飞碟为例就是还剩下多少飞碟, 剩下飞碟的位置, 速度等等)

当然直接把内存数据copy下来一定是最棒最粗暴的保存方法.

Unity的什么是 序列化化配表主要是给遊戏设计师或关卡设计师调整游戏数据用的用以改变游戏难度和调整游戏平衡性。

目前流行的做法是将Excel表格数据转换成Unity中的数据再由GUI控件显示出来,有很多Unity的Excel插件可以在Asset Store上搜索

如果是简单的线性数据可以用 SharpConfig 将其什么是 序列化化为 INI 文件。

如果是结构复杂的数据可用 LitJSON 将其什么是 序列化化为 Json 文件或者直接使用 System.Xml 什么是 序列化化为 XML。

另外有一些更高级的插件和工具如 Excel2Unity 可以解决从策划配表到程序解析的转换。

参考资料

 

随机推荐