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

时间:2015-12-04 21:08:32

标签: ios xamarin tvos apple-tv game-center-leaderboard

我按照所有必要的步骤来支持游戏中的排行榜(并且它们在iOS上运行得很好),但是在tvOS上,无法将GKGameCenterViewController配置为显示特定的排行榜,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);

我没有使用这些属性,而是按照here的说明进行操作。我注意到这将在最终的应用程序包中生成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>

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

1 个答案:

答案 0 :(得分:1)

您必须向Assets.xassets添加排行榜。在那里你可以输入标识符:

enter image description here

显示排行榜的代码:

@IBAction func openLeaderboard(sender: AnyObject) {

    let gcViewController = GKGameCenterViewController()
    gcViewController.gameCenterDelegate = self
    self.presentViewController(gcViewController, animated: true, completion: nil)
}