对于大多数游戏,玩家应可载入和保存游戏状态,对于持续时间较长的游戏尤其如此,例如冒险类游戏、实时战略游戏以及RPG游戏。其中,游戏应使文件在外部文件间存储和加载游戏数据。
该任务可通过XML或二进制文件并采用序列化机制予以实现,如图10-27所示。
序列化是指内存数据(例如GameObject中的组件状态)与数据流之间的转换过程,并可写入文件中。随后,可从该文件中加载数据,并重新在内存中创建组件,其状态与保存时相同。因此,游戏保存操作首先需要确定需保存、加载的数据(与特定游戏相关),后续处理过程并创建新类加载此类数据。示例代码ObjSerializer.cs可与任意GameObject进行绑定,在外部文件间序列化Transform组件(平移、旋转和缩放状态),并可通过XML或二进制文件格式予以实现。对此,XmlSerializer类用于将内存中的对象
转换为XML文件;而BinaryFormatter类则将内存中的对象转换为二进制文件。其中,XML文件具有可读性,而二进制文件通常无法供人们阅读和理解。
1 | using UnityEngine; |