7

私はAppleのコードを使用して表示していGKGameCenterViewControllerます:

GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil) {
    gameCenterController.gameCenterDelegate = self;
    [self presentViewController:gameCenterController animated:YES completion:nil];
}

これは、上記のコードを説明するテキストです。

Game Center UI が View Controller によって表示される (iOS)

ゲーム キットで使用される規則は、ビュー コントローラーの 1 つがゲーム キット ビュー コントローラーを提示することです。ビュー コントローラーは、表示された画面をプレーヤーが見終わったときに通知できるように、それが表示するビュー コントローラーのデリゲートとして機能します。リスト 2-1 は、このパターンの最も一般的な使用法を示しています。これは、Game Center ユーザー インターフェイスを表示することです。Game Center ビュー コントローラーはさまざまな Game Center コンテンツを表示するため、ゲームがカスタム ユーザー インターフェイスを使用して Game Center コンテンツを表示する場合でも、ほとんどのゲームはプレーヤーをこの画面に移動させるボタンを提供する必要があります。

推奨コードを使用すると、この画面 (GameCenter チャレンジ) が表示されますが、これは私が望んでいるものではありません。

GameCenter チャレンジ画面

私もこのコードを試しました:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"gamecenter:"]];

そのコードを使用すると、表示されるはずの画面が表示されます。

ここに画像の説明を入力

私は何かを誤解していますか、それとも間違ったことをしていますか? コードの最初の部分でメイン メニューが表示されませんか? リーダーボードが表示されないのはなぜですか?

アップデート

私はphix23viewStateの提案に従って実装しました:

GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil) {
    gameCenterController.gameCenterDelegate = self;
    gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards;
    [self presentViewController:gameCenterController animated:YES completion:nil];
}

しかし、Leaderboards 画面を表示したい /try したにもかかわらず、同じ Challenges 画面が表示されます。

4

4 に答える 4

1

GKGameCenterViewControlleriOS 6 以降で利用できる は、ゲーム センター対応アプリケーションのリーダーボード、実績、および課題を表示できます。

viewStateの を設定することで、初期ビューを変更できますGKGameCenterViewController。このプロパティを設定しない場合、デフォルトのビューが表示されます。これは、この場合のチャレンジ ビューです。リーダーボードや実績を設定していないので、何も表示されていないと思います。

于 2013-03-25T23:05:44.213 に答える
0

このコードを使用してみてください:

-(void)showGameCentersDefaultPage {
    GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
     if (gameCenterController != nil) {
           gameCenterController.gameCenterDelegate = self;
           gameCenterController.viewState = GKGameCenterViewControllerStateDefault;
           [self presentViewController:gameCenterController animated:YES completion:nil];
      }
}

特定のタイプの GameCenter Leaderboard から始めたい場合は、次のメソッドを自分のLeaderboardIDで呼び出すことができます

- (void)showLeaderboard:(NSString*)leaderboardID {
    GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
    if (gameCenterController != nil) {
        gameCenterController.gameCenterDelegate = self;
        //The next three lines are the lines of interest...
        gameCenterController.viewState = GKGameCenterViewControllerStateDefault;
        gameCenterController.leaderboardTimeScope = GKLeaderboardTimeScopeToday;
        gameCenterController.leaderboardCategory = leaderboardID;
        [self presentViewController:gameCenterController animated:YES completion:nil];
     }  
}
于 2013-03-26T04:22:30.423 に答える
0

GKGameCenterViewControllerビューステートを使用および設定します。

//Create a leaderboard view controller
GKGameCenterViewController *leaderboardViewController = [[GKLeaderboardViewController alloc] init];
leaderboardViewController.viewState = GKGameCenterViewControllerStateLeaderboards;

//Set the time scope (ex. All Time, This Week, Today) and the leaderboard ID
leaderboardViewController.timeScope = GKLeaderboardTimeScopeAllTime;
leaderboardViewController.leaderboardCategory = leaderboardID;

//Set the delegate so we can handle various actions including dismissal
leaderboardViewController.leaderboardDelegate = self;

//Present the view controller
[self presentViewController:leaderboardViewController animated:YES completion:nil];

このコードは、すべてのゲーム リーダーボード (1 つしかない場合はランキング) を表示するビュー コントローラーを表示します。表示するリーダーボード、時間範囲、委任などのプロパティを設定することもできます。また、GKAchievementViewController.

質問で提供したコード、

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"gamecenter:"]];

GameCenter アプリを起動します。これは、iOS がアプリを終了し、GameCenter に切り替わることを意味します。これは、ユーザーを混乱させる可能性があります。また、ユーザーがアプリから離れないようにする必要があります。代わりに、GKViewControllersアプリ内でモーダルに表示される を使用してください。

于 2013-04-28T16:44:09.763 に答える
0

iOS 7.0 の場合、以下を使用します。

リーダーボードを表示:

- (void)displayLeaderboard:(UIViewController *)viewController
{
    GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
    if (gameCenterController != nil) {
        gameCenterController.gameCenterDelegate = self;
        gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards;
        [viewController presentViewController:gameCenterController animated:YES completion:nil];
    }
}

実績の表示:

- (void)displayAchievements:(UIViewController *)viewController
{
    GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
    if (gameCenterController != nil) {
        gameCenterController.gameCenterDelegate = self;
        gameCenterController.viewState = GKGameCenterViewControllerStateAchievements;
        [viewController presentViewController:gameCenterController animated:YES completion:nil];
    }
}

これらの関数を使用しようとしているView Controllerは、自分自身を渡す必要があることに注意してください(つまり、viewController paramをアクティブなView Controllerに設定する必要があります)。

お役に立てれば。

于 2014-03-26T00:35:29.397 に答える