ios - 错误 : Attemped to add a SKNode which already has a parent

标签 ios swift sprite-kit swift3

我正在用 Swift 3 和 SpriteKit 做一个游戏,我试图声明一个全局变量以在 GameScene 类的其余部分中使用它,但我做不到。我做了什么:

class GameScene: SKScene {

    ...
    let personaje = SKSpriteNode(imageNamed: "Ball2.png")
    ...

在全局声明之后,我尝试像那样在 sceneDidLoad 中使用它:

...
personaje.position = CGPoint.zero
addChild(personaje)
...

我不知道为什么,但 Xcode 返回此错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attemped to add a SKNode which already has a parent: name:'(null)' texture:[ 'Ball2.png' (150 x 146)] position:{0, 0} scale:{1.00, 1.00} size:{150, 146} anchor:{0.5, 0.5} rotation:0.00'

提前感谢您的想法和解决方案!

最佳答案

我怀疑您试图添加一个已经有父级的 SKNode,这是不可能的。

在将节点添加到新节点之前从先前的父节点中删除该节点:

personaje.removeFromParent();
addChild(personaje)

或者创建一个新节点:

let newPersonaje = SKSpriteNode(imageNamed: "Ball2.png")
addChild(newPersonaje)

关于ios - 错误 : Attemped to add a SKNode which already has a parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431009/

相关文章:

ios - 如何使用 3D 模型在 ARKit 中捕获图像

swift - 如何将 UITextField 添加到 SKScene(SpriteKit 游戏)

swift - 为什么这不改变标签的颜色?

ios - 合并几个物理体

ios - 如何在不使用完成 block 的情况下在动画后执行代码?

ios - 计算 UITextView 中的行数,由帧大小包裹的行

ios - Swift:找不到协议(protocol)声明

iOS AVFoundation 的 AVCapturePhotoOutput

ios - 在 iOS 中显示选项列表的正确方法(快速)

ios - 获取 xmpp_login 访问 token 在 Facebook iOS SDK 中不起作用