序列化工作但反序列化崩溃

时间:2015-07-04 17:22:48

标签: haxe haxeflixel

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

this line of code您可以看到pixels在运行时实际上不是变量*。因此,当尝试将值赋给pixels时,反序列化器会崩溃。但是,需要更多的调查来解释为什么序列化程序首先序列化pixels字段,因为它在运行时不应该存在。

注意*:pixels的访问者是(get, set),这使得pixels在运行时不是真正的属性。阅读更多here

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