如何在tvOS上显示GameCenter排行榜?

我遵循了所有必要的步骤来支持我的游戏中的排行榜(并且他们在iOS上工作得很好),但是在tvOS上,不能configurationGKGameCenterViewController来显示特定的排行榜, LeaderboardIdentifier属性只是简单的丢失ViewState ):

 var leaderboardController = new GKGameCenterViewController (); // Unavailable on tvOS /* leaderboardController.ViewState = GKGameCenterViewControllerState.Default; leaderboardController.LeaderboardIdentifier = "myLeaderboardId"; */ leaderboardController.Finished += (sender, e) => { leaderboardController.DismissViewController (true, null); } PresentViewController (leaderboardController, true, null); 

我没有使用这些属性,而是按照这里的说明。 我注意到这将在最终的应用程序包中生成一个GKGameCenterContent.plist文件。 我仔细检查了内容:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>GKLeaderboards</key> <array> <dict> <key>identifier</key> <string>myLeaderboardId</string> <key>onDemandResourcesTag</key> <string>com.apple.gamecenter.Leaderboard</string> <key>posterImageName</key> <string>Leaderboard/Poster</string> </dict> </array> </dict> </plist> 

这看起来绝对正确,图像当然是在捆绑。 不过,使用上面的代码来显示游戏中心控制器只会给我的成就屏幕,没有别的。

您必须将排行榜添加到Assets.xassets。 在那里你可以input标识符:

在这里输入图像说明

显示排行榜的代码:

 @IBAction func openLeaderboard(sender: AnyObject) { let gcViewController = GKGameCenterViewController() gcViewController.gameCenterDelegate = self self.presentViewController(gcViewController, animated: true, completion: nil) }