我试图建立在我的HaxeFlixel游戏保存功能。
一些背景资料:有问题的目的是Player
的一个实例,其延伸FlxSprite
。保存数据存储在我为它做了一个自定义的类的实例。该实例存储在StringMap
(键是保存的名字),它是通过在FlxSave
它序列化到一个变量保存。
创建保存数据并写入它工作正常。然而,读取数据保存回在崩溃的游戏消息“无效的字段:像素”。 pixels
是FlxSprite一个领域,但它不是序列化的字符串的第一个这样的领域,所以它可能不是。
如果它是有用的,该字段的声明是y6:pixelsn
- 那就是:
y
开始一个字段,它被命名为...6:
长度为6的字符串...pixels
(字符串)n
空从this line of code你可以看到,pixels
其实并不是在运行时可变*。所以,当它试图将值分配给pixels
的unserializer会崩溃。但更多的调查需要,为什么串行放在第一位序列化的pixels
领域,因为它真的不应该在运行时存在。
注*:pixels
的访问器是(get, set)
,这使得pixels
不是房地产在运行时。阅读更多here。
作为一般规则,我不建议直接序列化一个FlxSprite
(或其他复杂的对象)。相反地,应提取所需的信息(例如,x / y位置或马力等),只有那些序列。