【问题标题】:Strange EXC_BAD_ACCESS SpriteKit removeSubsprite crash奇怪的 EXC_BAD_ACCESS SpriteKit removeSubsprite 崩溃
【发布时间】:2014-03-23 21:01:30
【问题描述】:

我是SpriteKit 的新手,刚刚制作了我的第一款游戏。在 iOS 7.1 之前,一切都运行良好。现在,经过几次升级到一个新的水平并呈现一个新的Scene,它崩溃了。我不认为我以不正确的方式呈现它:

ZSSMyScene *nextLevel = [[ZSSMyScene alloc] initWithSize:self.size level:self.level score:score];
[self.view presentScene:nextLevel];

我收到了一个EXC_BAD_ACCESS 错误,看起来它正在removeSubsprite 上发生,但我在我的代码中找不到要删除子精灵的任何地方:

不确定要提供哪些其他信息,因为这只是我更新到 iOS 7.1 SDK 时似乎开始的一个模糊错误。

【问题讨论】:

  • 您是否将 SKShapeNode 作为其他节点(特别是 SKSpriteNode)的子节点?如果是这样,请检查崩溃是否在没有 SKShapeNode 子节点的情况下消失。当我启用将形状节点添加到许多节点的物理或节点形状调试绘图时,我几乎立即遇到此崩溃。似乎是 iOS 7.1 版 Sprite Kit 的 bug。
  • @LearnCocos2D 是的,我有一个 SKSpriteNode 作为场景的孩子添加。我需要这样做,有什么办法可以解决这个问题吗?!
  • 我相信这个帖子会回答它:stackoverflow.com/questions/22399278/…
  • 那么,在我的SKSpriteNode 子类中我需要覆盖removeFromParent?虽然我不明白我在做什么...

标签: ios objective-c sprite sprite-kit skscene


【解决方案1】:

这似乎是一个错误,可能只有 SKShapeNodes。

我的解决方案是创建一个 SKNode 类别并在我要删除的任何节点有子节点时调用此清理方法。

- (void)cleanUpChildrenAndRemove {
    for (SKNode *child in self.children) {
        [child cleanUpChildrenAndRemove];
    }
    [self removeFromParent];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 2013-11-16
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多