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

Vik*_*féo 5 haxe haxeflixel

我正试图在我的HaxeFlixel游戏中设置一个保存功能.

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

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

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

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

Kev*_*soL 3

从这行代码可以看出,pixels在运行时实际上不是一个变量*。因此,当反序列化器尝试向 赋值时,它会崩溃pixels。但是需要更多调查为什么序列化器pixels首先序列化这些字段,因为它不应该在运行时真正存在。

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

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