繁体   English   中英

在Spritekit中,我无法弹出GameCenter视图

[英]In spritekit I cant pop GameCenter view

我正在用Sprite Kit开发游戏,在我使用GameCenter之前一切正常,这是我的代码

define the Gameviewcontroller:

var GameController:GameViewController = GameViewController()

当您触摸TouchecBegan内部的节点时:

    let touchLocation = (touches as NSSet).anyObject()?.locationInNode(self)

    let targetNode = self.nodeAtPoint(touchLocation!)

    if targetNode.name == "leader"{

        print("hhhh")

        GameController.showGamecenetr()

    }

并且内部GameViewController的代码ShowGameCenter

func showGamecenetr() {

    print("jijijijji")

    GameKitHelper.sharedInstance.showGKGameCenterViewController(self)

}

它应该弹出GameCenter的视图,但显示错误:

无法将类型UIView值转换为SubView

我发现这是一个非常简单的错误,但是我以前从未在这里遇到过,我也不知道如何处理它,有人可以帮我吗?

这是showGKGameCenterViewController()中的代码

func showGKGameCenterViewController(viewController:UIViewController!){

    if !gamecenterEnable {

        print("No user!")
        return 
        }

    let gameCenterViewController = GKGameCenterViewController()

    gameCenterViewController.gameCenterDelegate = self

    gameCenterViewController.viewState = .Leaderboards
    viewController.presentViewController(gameCenterViewController, animated: true, completion: nil)

    }

帮助帮助;(

因此,我假设您对本地播放器/用户进行了身份验证。 要打开GameCenter只需在您的场景中这样做即可

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    for touch in touches {
        let location = touch.locationInNode(self)
        let touchedNode = nodeAtPoint(location)

        if targetNode.name == "leader"{
            let gcViewController: GKGameCenterViewController = GKGameCenterViewController()
            gcViewController.gameCenterDelegate = self

            gcViewController.leaderboardIdentifier = kLeaderboardID

            gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards
            let vc: UIViewController = self.view!.window!.rootViewController!
            vc.presentViewController(gcViewController, animated: true, completion: nil)  
        }
    }
}

场景中的GKGameCenterControlleDelegate

class GameScene: SKScene, GKGameCenterControllerDelegate {

func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController) {

    AppDelegate().resumeBackgroundMusic()
    gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM