5

我正在尝试在我的 HaxeFlixel 游戏中设置保存功能。

一些背景:有问题的对象是 的一个实例Player,它扩展了FlxSprite. 保存数据存储在我为它制作的自定义类的实例中。该实例存储在 a 中StringMap(键是保存名称),通过将其序列化为 a 中的变量来保存它FlxSave

创建保存数据并写入它工作正常。但是,读取保存数据会导致游戏崩溃,并显示消息“无效字段:像素”。pixels是 FlxSprite 的一个字段,但它不是序列化字符串中的第一个这样的字段,所以它可能不是那个。

如果有用,该字段的声明是y6:pixelsn- 即:

  • y开始一个名为...的字段
  • 6:长度为 6 的字符串...
  • pixels(字符串)
  • n无效的
4

1 回答 1

3

从这行代码你可以看到它pixels实际上不是运行时的变量*。因此,反序列化程序在尝试将值分配给pixels. 但是需要更多调查为什么序列化pixels程序首先序列化字段,因为它不应该在运行时真正存在。

注意*:pixelsare的访问器在运行(get, set)pixels不是真正的属性。在这里阅读更多。

作为一般规则,我不建议FlxSprite直接序列化 a(或其他复杂对象)。相反,您应该提取所需的信息(例如 x/y 位置或 hp 等)并仅序列化这些信息。

于 2015-07-06T06:27:53.697 回答