2015-11-26 1 views
0

Je fais un jeu avec le kit de sprite, et tout allait bien avant que je l'utilise GameCenter l'intérieur, voici mon codeDans spritekit Je ne peux pas pop vue GameCenter

define the Gameviewcontroller: 

var GameController:GameViewController = GameViewController() 

Lorsque vous appuyez sur le nœud à l'intérieur du TouchecBegan:

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

    let targetNode = self.nodeAtPoint(touchLocation!) 

    if targetNode.name == "leader"{ 

     print("hhhh") 

     GameController.showGamecenetr() 

    } 

et à l'intérieur du GameViewController le code de ShowGameCenter:

func showGamecenetr() { 

    print("jijijijji") 

    GameKitHelper.sharedInstance.showGKGameCenterViewController(self) 

} 

Il devrait apparaître la vue de GameCenter, mais il montre l'erreur:

ne pouvait pas jeter valeur de type UIView à SubView

je trouve qu'il est une erreur très facile, mais je jamais rencontré ici avant , Je ne sais pas comment le gérer, Quelqu'un peut-il m'aider?

Voici le code à l'intérieur 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) 

    } 

aide aide; (

Répondre

1

Donc, je suppose que vous authentifié votre lecteur local/utilisateur Pour ouvrir GameCenter faire exactement comme ça dans la scène

.
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 dans la scène

class GameScene: SKScene, GKGameCenterControllerDelegate { 

Et

func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController) { 

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

Oh, mon cher Darvydas, je suis désolé. Je vois juste ton message maintenant, je suis tellement contente de te revoir vraiment !!! Vous êtes si professionnel !! et si gentil !! Je souhaite faire des amis avec vous vraiment !!! – happyzhang187

+0

Puis-je avoir votre WhatsApp? – happyzhang187

+0

J'ai fatigué votre code, mais The Xcode ne peut pas trouver GKGameCenterViewController :( – happyzhang187