Sprite Kit如何删除游戏场景

Sprite Kit how to delete game scene

我使用探查器并检测到我从包含游戏场景视图的视图控制器返回后(例如弹出回主菜单)。游戏场景还在记忆中

我认为它与我使用的某些 SKAction 相关。如何跟踪导致该问题的对象。

我使用一些 SKAction 运行 块,永远重复等等,我确信它会发生一些事情。

你不能delete一个SKScene。我建议为您呈现场景时创建一个功能。这是一个例子

(Swift)

 func deleteView(deleteEveryThing:Bool) {

    if deleteEveryThing {

         self.removeAllActions()
         self.removeAllChildren()

         //Scene presentation code here                
    }

    else {

         self.removeAllChildren()
         //Scene Presentation Code here
    }
 }

(Objective - C)

 -(void)deletView:(BOOL)deleteEveryThing {

     if (deleteEveryThing) {

        [self removeAllNodes];
        [self removeAllActions];
    }

    else {

        [self removeAllNodes];
        [self removeAllActions];
    }
 }

所以我所做的是创建一个名为 deleteView 的函数,并且 deleteView 有一个布尔参数(真或假),如果它是真那么它将删除所有操作:self.removeAllActions() or [self removeAllActions]; 和所有 children: self.removeAllChildren() or [self removeAllChildren];SKScene 中。这有助于释放内存,一旦这两行代​​码 运行 就可以处理场景演示代码。还有一个 else 部分做同样的事情,但在 SKScene.

中留下 SKActions