2017-04-12 1 views
1

Spritekit 및 swift 3을 사용하여 게임을 만들었습니다. 내 pauseGame() 메서드를 호출하려고 할 때 내 GameScene 클래스 (SKScene의 하위 클래스)에 있습니다.), applicationWillResignActive(_ application: UIApplication) 방법 내의 AppDelegate 파일에서.AppDelegate (Swift 3, SpriteKit, Xcode 8)에서 GameScene 메서드 호출

func applicationWillResignActive(_ application: UIApplication) { 

    if let gameScene = GameScene(fileNamed: "GameScene") { 

     gameScene.pauseGame() 
    } 
} 

어떻게이 문제를 해결 할 수있는 컴파일러 오류가 작동하지 않습니다이 있지만 나는 이미 GameScene 클래스를 인스턴스화하고이 방법으로 내 AppDelegate에 파일의 메소드를 호출하려고

? 미리 감사드립니다.

+2

applicationwillresignactive 알림을 전송, 당신은 게임 씬 클래스에서 그것을들을 수 있습니다. 애플 대행 인 – Knight0fDragon

+0

@ Knight0fDragon에서 작업을 할 필요가 없습니다. 대답이 아니라 덧글이 아닌 – BadgerBadger

+0

@BadgerBadger로 게시해야합니다. 그러면 저도 실제로 답을 써야합니다. 게으르다 do – Knight0fDragon

답변

0

GameScene의 새 인스턴스를 만듭니다. 기존 인스턴스를 일시 중지하려면 AppDelegate에서 해당 인스턴스에 대한 참조를 추가해야합니다.

더 좋은 솔루션은 앱이 백그라운드로 들어갈 때 알림을 수신하는 GameScene 클래스를 등록하는 것입니다. 이 클래스를 AppDelegate와 연결하는 좋은 대안입니다. 당신의 GameScene 클래스에서

가있는 viewDidLoad이 추가() 함수 :

let app = UIApplication.shared 

//Register for the applicationWillResignActive anywhere in your app. 
NotificationCenter.default.addObserver(self, selector: #selector(GameScene.applicationWillResignActive(notification:)), name: NSNotification.Name.UIApplicationWillResignActive, object: app) 

는 수신 통지에 반응하는 GameScene 클래스에이 기능을 추가

func applicationWillResignActive(notification: NSNotification) { 
    pauseGame() 
} 
+0

나는 GameScene으로 ViewController를 변경하는 편집을 만들었습니다. 웬일인지 익명으로 로그인 했으므로 변경하고 싶다면 환영합니다. – Knight0fDragon

+0

감사합니다. 업데이트하는 것을 잊어 버렸습니다. – zanony

관련 문제