2

これは、解決策も提供される前にここで尋ねられましたが、正しく機能しません

認証時に iOS 6 Game Center がクラッシュする

これを確認してください。私は同じ問題を抱えています。リンクの上記のコードはそれを解決しました.GameCenterは機能しますが、cocos2dゲームが回転し、ゲームに問題が発生します. 誰かがそれを解決したか、これに対する解決策を持っていますか

これも試してみましたが、動作しません横向き専用アプリでの GameCenter 認証は、 cocos2d シーンを使用しているため、思うように UIApplicationInvalidInterfaceOrientation をスローします。

現在、他に選択肢がないため、このコードを実装して問題を解決しています。

-(NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

私が必要とする解決策は、方向のコードを横向きにロックしながら、クラッシュすることなくゲームセンターを開くのは簡単です (すべての cocos2d シーンを横向きに保ちます)。前もって感謝します。

4

2 に答える 2

2

ロックされたランドスケープを残したまま、ついに Game Center が iOS 6 で動作するようになりました。

このコードを AppDelegate に入れました。(ビューコントローラーではありません)

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
  return (UIInterfaceOrientationMaskAll);
}

これをView Controller.mに入れました

- (void)authenticateLocalPlayer {
     GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
     localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
    {
        if (viewController != nil)
        {
            [self presentViewController:viewController animated:YES completion:nil];  
        }
     };
}

リーダーボードとアチーブメント ビュー コントローラーの更新も見つかりました。

[self presentViewController:achievements animated:YES completion:nil];
[self presentViewController:leaderboardController animated:YES completion:nil];

[self dismissViewControllerAnimated:NO completion:nil];
于 2012-12-03T15:05:55.260 に答える
2

私の経験から、私が行った回答のほとんどは、cocos2d 1.x の問題を解決しました。ただし、私のゲームは cocos2d 2.x を使用して開発されたので、ここで問題を解決しました。

1) ターゲット設定に次の設定があります。

ここに画像の説明を入力

ここに画像の説明を入力

縦向きのサポートを追加する必要があると人々は言っていましたが、それは私の回転を台無しにしました...

2) 最新の cocos2d 2.x を使用していることを確認してください! たとえベータ版であっても!(現在 v2.1 b2)

http://www.cocos2d-iphone.org/

信じてください。ベータ版は不安定だと思っていて、使用していなかったため、多くのエラーや頭痛の種がありました。最終的に、cocos2d ではベータ版へのアップグレードが常に推奨されます (Xcode とは異なります!)。

3) AppDelegate.m で、CCDirectorメソッドrunWithScene:pushScene:内部を使用していないことを確認してください- (BOOL)application: didFinishLaunchingWithOptions:

あなたがしたいことは、この機能のみを使用することです:

// This is needed for iOS4 and iOS5 in order to ensure
// ... blah blah blah
- (void)directorDidReshapeProjection:(CCDirector *)director {
    if (director.runningScene == nil) {
        // Add the first scene to the stack. blah blah...
        // and add blah
        [director runWithScene:[LanguageScene node]];
    }
}

そして単なる憶測ですが、でプレーヤーを認証しないでください- (BOOL)application: didFinishLaunchingWithOptions:。メイン シーンがロードされ、onEnterTransitionDidFinish呼び出された後で、彼を認証します。

于 2012-10-14T19:35:46.703 に答える