在提出解决方案之前已经在这里提出过这个问题但是没有正常工作
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场景保留在横向中) 任何帮助,将不胜感激。先谢谢你。
答案 0 :(得分:2)
根据我的经验,我经历的大多数答案都解决了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中,确保您没有在CCDirector
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
。
答案 1 :(得分:2)
我终于让游戏中心在iOS 6中工作,并为我保留了锁定的景观。
我把这段代码放在我的AppDelegate中。 (不是viewcontroller)
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return (UIInterfaceOrientationMaskAll);
}
我把它放在我的视图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];