2015-11-26 2 views
0

Я делаю игру с набором спрайтов, и все прошло хорошо, прежде чем я использую GameCenter внутри, Вот мой кодВ spritekit я не могу поп вида 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) 

    } 

помощь помощь; (

ответ

1

Так я предполагаю, что вы проверку подлинности вашего локального игрока/пользователя Чтобы открыть 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) 
} 
+0

О, дорогой Darvydas, я извиняюсь. Я просто вижу ваше сообщение сейчас, я так счастлив снова увидеть вас! Вы так профессиональны! и так любезно !! Я хочу подружиться с тобой! – happyzhang187

+0

Могу ли я получить ваш whatsapp? – happyzhang187

+0

Я устал от вашего кода, но Xcode can not find GKGameCenterViewController :( – happyzhang187