Cocos2d Gamecenter 因方向问题导致 iOS6 崩溃

Posted

技术标签:

【中文标题】Cocos2d Gamecenter 因方向问题导致 iOS6 崩溃【英文标题】:Cocos2d Gamecenter Crashing iOS6 due to orientation 【发布时间】:2012-10-13 20:04:39 【问题描述】:

在给出解决方案之前已在此处询问过此问题,但无法正常工作

ios 6 Game Center Crash on Authentication

检查一下我有同样的问题。链接中的上述代码解决了它,GameCenter 工作,但现在 cocos2d 游戏旋转,这给游戏带来了问题。有没有人解决它或对此有任何解决方案

也试过这个,但我认为它不起作用GameCenter authentication in landscape-only app throws UIApplicationInvalidInterfaceOrientation,因为我使用的是 cocos2d 场景。

目前我正在实施此代码来解决问题,因为我别无选择。

-(NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window

    return UIInterfaceOrientationMaskAllButUpsideDown;

我需要的解决方案是简单地打开游戏中心而不会崩溃,同时将代码锁定为横向(将所有 cocos2d 场景保持在横向) 任何帮助,将不胜感激。提前谢谢你。

【问题讨论】:

你用的是cocos2d 1.x还是2.x?? 这个答案可能对你有帮助。***.com/questions/12488838/… 尝试为方法应用程序supportedInterfaceOrientationsForWindow返回UIInterfaceOrientationMaskLandscape 【参考方案1】:

根据我的经验,我经历的大多数答案都解决了 cocos2d 1.x 上的问题。但是,我的游戏是使用 cocos2d 2.x 开发的,所以这里解决了我的问题:

1) 我在目标设置中有这些设置:

人们说我应该添加纵向支持,但这只是搞砸了我的旋转......

2) 确保您使用的是最新的 cocos2d 2.x!即使它处于测试阶段! (目前为 v2.1 b2)

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

相信我,我有很多错误和头痛,因为我认为 beta 不稳定,我没有使用它。最终,始终建议使用 cocos2d 升级到 beta(与 Xcode 不同!)

3) 在 AppDelegate.m 中,确保您没有在 - (BOOL)application: didFinishLaunchingWithOptions: 内使用 CCDirector 方法 runWithScene:pushScene:

你想做的,只是使用这个功能:

// 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

【讨论】:

试试这个并告诉你进展如何【参考方案2】:

我终于让 Game Center 在 iOS 6 中工作,并为我留下了锁定的风景。

我将此代码放在我的 AppDelegate 中。 (不是视图控制器)

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

  return (UIInterfaceOrientationMaskAll);

我把它放在我的视图控制器中。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];

【讨论】:

以上是关于Cocos2d Gamecenter 因方向问题导致 iOS6 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iOS 6 Game Center 在横向模式 cocos2d 中的身份验证崩溃

弹丸/子弹方向 Cocos2d

炸弹 - Cocos2d/Box2d

Cocos2d入门--3-- 向量的应用

一次加载多个 .plist 时 Cocos2d 游戏崩溃

将 MapKit 与 Cocos2D 集成