2017-08-24 55 views

回答

1

在AppDelegate.swift中,Xcode默認使用一種名爲applicationWillResignActive的方法。這是你應該看到的,除非你編輯或刪除方法:

func applicationWillResignActive(_ application: UIApplication) { 
    // ... 
} 

從Xcode的模板......

當應用程序即將從活動轉移到非活動狀態 發送。這可能會發生在某些類型的臨時中斷 (如傳入電話或SMS消息)或當用戶退出應用程序並開始過渡到後臺狀態。 使用此方法可暫停正在進行的任務,禁用定時器並使圖形渲染回調無效。遊戲應該使用這種方法來暫停 這個遊戲。

由於在遊戲變爲不活動狀態之前調用此方法,我的建議是使用此方法來識別您的遊戲已暫停。您可以在此方法中放置任何需要的代碼,以實際暫停遊戲的特定任務。

希望這會有所幫助!

1

就像約翰說的那樣,你需要暫停遊戲..但是要做到這一點,你需要一個對遊戲實例/對象的引用。這是一個靜態的參考,你可以在你的AppDelegate使用:

class GameScene: SKScene { 

    static var sharedInstance = GameScene() 

    override func didMove(to view: SKView) { 
    sharedInstance = self 
    } 
} 

然後,在AppDelegate的功能,你可以使用:

GameScene.sharedInstance.isPaused = true // or false 
0

你應該暫停比賽中applicationWillResignActive

您應該使用此方法暫停正在進行的任務,禁用定時器,並且降低OpenGL ES幀速率。遊戲應該使用這個方法來暫停遊戲 。處於非活動狀態的應用程序在等待轉換到活動狀態或背景狀態時應該執行最小程度的工作 。

在說話的瞬間(早期的教,這不是一個情況下),當你從後臺返回,例如。返回激活狀態,場景將自動解除。有時這是期望的行爲,有時不是。

例如,有時您希望您的遊戲在用戶從背景中返回時保持暫停狀態。在這種情況下,您將從適當的AppDelegate方法中觸發通知。然後你會在GameScene中捕捉到這個通知,並採取必要的行動(例如,再次暫停遊戲,或者暫停世界節點,並彈出它以讓用戶繼續他想要的時間...)

暫停自動太。當你轉到背景時,場景暫停。如果你只是想讓你的場景保持暫停,你並不需要做任何事情。