我如何获取并删除 SKNode 的父节点?

How do I get at, and then remove the parent of an SKNode?

A SKSpriteNode 有一个父对象,它是随机分配的,不知道它是谁。

那个SKSpriteNode如何找到它的父级,然后从场景中移除父级,从而移除自己和父级?

如果您仔细阅读文档,您会在SKNode class 中找到一个名为removeFromParent 的方法。只需调用它:

yourSpriteNode.removeFromParent()

或者,如果您想在一系列 SKAction 之后从其父节点中删除节点,您可以使用 SKAction.removeFromParent().

let removeFromParentAction = SKAction.removeFromParent()
let sequence = SKAction.sequence([yourOtherActions, removeFromParentAction])
yourSpriteNode.run(sequence)

编辑:

看完你的评论,我猜你可能做了这样的事情:

// "cherry pick" an action
let action = AllMyActions.action1
yourSpriteNode.run(action);

嗯,解决这个问题的方法是创建一个像这样的动作:

let removeParent = SKAction.run { 
    [unowned self] in self.yourSpriteNode.parent?.removeFromParent() }

将上面的代码放在您选择动作的那一行之后,

yourSpriteNode.run(SKAction.sequence([action, removeParent]))

假设 A 是一个 SKSpriteNode ,您可以检查它是否有父节点,如果有,您可以通过从父节点中删除来将其从视图中删除。

if let parentOfA = A.parent{
 parentOfA.removeFromParent()
}