3

ゲームでリーダーボードをサポートするために必要なすべての手順を実行したと思います(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);

これらのプロパティを使用する代わりに、こちらの手順に従いました。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>

これは絶対に正しいように見えます。もちろん、画像もバンドルに含まれています。それでも、上記のコードを使用してゲーム センター コントローラーを表示すると、実績画面のみが表示され、それ以外は何も表示されません。

4

1 に答える 1

2

Assets.xassets にリーダーボードを追加する必要があります。そこに識別子を入力できます。

ここに画像の説明を入力

リーダーボードを表示するコード:

@IBAction func openLeaderboard(sender: AnyObject) {

    let gcViewController = GKGameCenterViewController()
    gcViewController.gameCenterDelegate = self
    self.presentViewController(gcViewController, animated: true, completion: nil)
}
于 2015-12-05T22:25:25.540 に答える