我目前正在使用适用于Windows Phone 7的XNA Game Studio 4.0框架编写2D游戏。如果用户想要保存/加载,我已经进入了解决游戏坟墓问题的阶段如果他们稍后恢复比赛。
我目前正在使用TiledLib库来渲染地图以及screen state management示例作为我的项目的基础(例如,正确的逻辑删除事件都已到位)。 TiledLib库中的Map
对象具有多维数组([,]
),用于在每个TileLayer
内存储地图的切片。我的地图只有一个TileLayer
,只有1个Texture2D
具有不同的Rectangle
源位置,这取决于图块显示的内容。请务必跟踪每个图块的所有相应源矩形,以便可以按照播放器离开的方式恢复已编辑的地图。
我在尝试以最佳方式(或任何方式)实现游戏屏幕的墓碑时遇到了很多麻烦。我没有太多的序列化经验,这是我第一次尝试使用Windows Phone 7应用程序进行逻辑删除。我知道非锯齿状数组不能使用通常的XmlSerializer序列化,有没有办法解决这个问题?自定义序列化器是一条很好的路径吗?优点缺点?有没有其他人有TileLib经验和序列化游戏画面?或者是带有X,Y坐标的2D地图?为墓碑化序列化的数据量是多少?
提前感谢您的答案和建议。
答案 0 :(得分:3)
我建议您使用BinaryReader
和BinaryWriter
编写自己的序列化例程,因为您可以完全控制整个数据,并完全控制进程,并且相当比自动XML序列化更快。
当然,缺点是您必须使您的读写例程彼此同步,并与您正在序列化的类保持同步。如果代码更改(添加或删除要序列化的数据),您还需要一种处理序列化格式更改的机制。