在 spritekit 中我无法弹出 Game Center 视图
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)
}
求助求助;(
所以我假设您已验证本地 player/user。
要打开 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)
}
我正在用 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)
}
求助求助;(
所以我假设您已验证本地 player/user。
要打开 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)
}