我试图在我的HaxeFlixel游戏中设置保存功能。
一些背景:有问题的对象是Player
的一个实例,它扩展了FlxSprite
。保存数据存储在我为其制作的自定义类的实例中。该实例存储在StringMap
(密钥是保存名称)中,通过将其序列化为FlxSave
中的变量来保存。
创建保存数据并编写它可以正常工作。但是,重新读取保存数据会导致游戏崩溃并显示消息"无效字段:像素"。 pixels
是来自FlxSprite的字段,但它不是序列化字符串中的第一个这样的字段,所以它可能不是那样。
如果它有用,该字段的声明为y6:pixelsn
- 即:
y
开始一个名为... 6:
一串长度为6 ... pixels
(字符串)n
null 答案 0 :(得分:3)
从this line of code您可以看到pixels
在运行时实际上不是变量*。因此,当尝试将值赋给pixels
时,反序列化器会崩溃。但是,需要更多的调查来解释为什么序列化程序首先序列化pixels
字段,因为它在运行时不应该存在。
注意*:pixels
的访问者是(get, set)
,这使得pixels
在运行时不是真正的属性。阅读更多here。
作为一般规则,我不建议直接序列化FlxSprite
(或其他复杂对象)。相反,你应该提取所需的信息(例如x / y位置或hp等)并仅序列化那些信息。