【问题标题】:Serializing works but unserializing crashes序列化工作但反序列化崩溃
【发布时间】:2015-09-22 06:28:34
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: haxe haxeflixel


    【解决方案1】:

    this line of code 可以看出pixels 在运行时实际上并不是一个变量*。因此,反序列化程序在尝试将值分配给pixels 时会崩溃。但需要进一步调查为什么序列化程序首先序列化 pixels 字段,因为它不应该在运行时真正存在。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 2011-02-05
      • 2014-01-24
      • 2011-04-17
      相关资源
      最近更新 更多