Swift 暂停并恢复场景

Swift 暂停并恢复场景,swift,sprite-kit,swift2,xcode7,Swift,Sprite Kit,Swift2,Xcode7,我在iPhone上测试我的游戏,我意识到我的主页按钮有问题。当我暂停游戏并加载另一个应用程序时,游戏不会暂停,当应用程序不在屏幕上时,游戏会继续 代码如下: class GameScene: SKScene, SKPhysicsContactDelegate{ var PauseButton = SKSpriteNode(imageNamed: "pause") var Resume = SKSpriteNode(imageNamed: "resume1") } init(siz

我在iPhone上测试我的游戏,我意识到我的主页按钮有问题。当我暂停游戏并加载另一个应用程序时,游戏不会暂停,当应用程序不在屏幕上时,游戏会继续

代码如下:

 class GameScene: SKScene, SKPhysicsContactDelegate{

 var PauseButton = SKSpriteNode(imageNamed: "pause")

 var Resume = SKSpriteNode(imageNamed: "resume1")
}


 init(size: CGSize, won: Bool) {
    super.init(size: size)      
  //pause

    PauseButton.position = CGPointMake(330, 700)
    PauseButton.zPosition = 3;
    PauseButton.size = CGSizeMake(40, 40);
    PauseButton.name = "PauseButton"

    self.addChild(PauseButton)

   //resume 
    Resume = SKSpriteNode(imageNamed: "resume1")
    Resume.position = CGPointMake(520, 450)
    Resume.zPosition = 100
    Resume.setScale(1.3)   

    }

 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    /* Called when a touch begins */

    show = self.scene as SKScene!


    for touch in touches  {


        let Location:CGPoint = touch.locationInNode(self)
        let Node:SKNode = self.nodeAtPoint(Location)



        if(Node == PauseButton){


            self.show.paused = true

            PauseButton.removeFromParent()

            self.addChild(Resume)

        }

        if(Node == Resume){


            Resume.removeFromParent()
            self.show.paused = false

            self.addChild(PauseButton)
        }
类游戏场景:SKScene,skphysiccontactdelegate{
var PauseButton=SKSpriteNode(图像名为:“暂停”)
var Resume=SKSpriteNode(图像名称:“resume1”)
}
初始化(大小:CGSize,赢得:Bool){
super.init(大小:size)
//停顿
PauseButton.position=CGPointMake(330700)
PauseButton.zPosition=3;
PauseButton.size=CGSizeMake(40,40);
PauseButton.name=“PauseButton”
self.addChild(暂停按钮)
//恢复
Resume=SKSpriteNode(图像名称:“resume1”)
Resume.position=CGPointMake(520450)
Resume.zPosition=100
简历.设置刻度(1.3)
}
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
/*当触摸开始时调用*/
show=self.scene作为SKScene!
接触{
let位置:CGPoint=touch.locationInNode(自)
let节点:SKNode=self.nodeAtPoint(位置)
如果(节点==暂停按钮){
self.show.paused=true
PauseButton.removeFromParent()文件
self.addChild(恢复)
}
如果(节点==恢复){
Resume.removeFromParent()
self.show.paused=false
self.addChild(暂停按钮)
}

当我按下home(主页)按钮时,如何使游戏暂停?

当你返回应用程序时,SpriteKit将自动恢复。因此,你需要:

步骤1:创建一个变量:

var wasPaused : Bool = false
步骤2:在暂停/恢复功能中更改:

wasPaused = true // pause func
wasPaused = false // resume fun
步骤3:在更新场景的乐趣时:

override func update(currentTime: CFTimeInterval) {
    if isPausing{
        self.paused = true
        return
    }
}

暂停视图而不是场景

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    guard let view = view else {
        return
    }

    view.paused = !view.paused
}
覆盖函数触摸开始(触摸:设置,withEvent事件:UIEvent?){
保护让视图=查看其他视图{
返回
}
view.paused=!view.paused
}