【问题标题】:Saving level data in XNA在 XNA 中保存液位数据
【发布时间】:2010-07-15 15:18:33
【问题描述】:

我正在用 XNA 编写游戏。第一个主要目标是让它在 Windows 上完成并运行,但之后我将购买 360 套件并更改我需要更改的所有部分,以使其成为可在 360 上运行的游戏。

我目前正在编写一个关卡编辑器,我将使用它来创建关卡,但也作为用户功能保留。我想知道保存数据的最佳/最常见/最简单的方法是什么,我应该把它保存在哪里?

【问题讨论】:

  • 移植到 360 时要小心。该平台上的垃圾收集完全不同..

标签: c# xna


【解决方案1】:

关卡格式

至于您保存数据的格式,这取决于您。如果您可以将关卡数据表示为平面文本,也许是一系列线条和数字,那就去吧。许多关卡编辑器使用自定义类/结构或 XML 表示关卡数据。

准备保存

如果数据是纯文本或 XML,那么您的工作很简单,无需进行任何准备工作。如果数据包含在类/结构中,那么您需要先序列化数据,然后再将其写入存储。

序列化基本上可以通过将类转换为易于写入存储的格式来轻松地将数据持久保存在类中(反序列化则相反)。

序列化通常使用 XMLSerializer 类完成。对于这方面的一个简单示例,您可能希望查看 MSN example 他们演示如何保存/加载保存游戏数据。

注意:有些人不喜欢序列化为 XML,因为它会将他们的数据暴露给窥探者,对于关卡编辑器来说,这可能不是问题,甚至可能是可取的。

保存数据

最后考虑的是用于保存数据的方法。在 PC 上,您可以使用标准 .NET 库将数据写入任意位置,但在 360 上并非如此。如果您玩过许多 360 游戏,您就会知道每个游戏都会弹出一个对话框询问您要使用哪个存储设备。您将需要使用与其他 360 游戏相同的类和方法,即 XNA StorageContainer 类。微软有一些很好的例子here 应该可以帮助你。

当您计划将关卡编辑器保留为用户功能时,我建议您使用 XNA 库(Guide.BeginShowStorageDeviceSelector、StorageContainer)来实现您为 PC 和 360 保存/加载关卡数据。这是只是为了避免为 PC 和 360 编写单独的保存/加载代码。

【讨论】:

    【解决方案2】:

    我建议使用Microsoft.Xna.Framework.Storage Namespace。主要的好处是这个方向在移植到 xbox360 时会起作用,而保存信息的逻辑几乎没有变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      相关资源
      最近更新 更多