我正在用 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/