我一直在尝试实现 Game Center 多人游戏并努力获得 GKMatchViewController 之外的任何东西。

我有两个视图,一个是我的主菜单,这是启动多人游戏并且玩家获得 GKMatchViewController 的地方。 然后在这背后,用户不知道它,但视图更改为他们实际玩的多人游戏视图,因此当 GKMatchViewController 被解除时,他们在游戏视图中而不是菜单中。

我在这里启动多人游戏(是的,我使用的是 cocos2d):

-(void)mpGo:(id)sender{
    GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
    request.minPlayers = 2;
    request.maxPlayers = 2;

    [[GKMatchmaker sharedMatchmaker] findMatchForRequest:request
                                   withCompletionHandler:^(GKMatch *returnedMatch, NSError *error) 
     {
         if (error) NSLog(@"match error: %@", error);
         else if (returnedMatch != nil)
         {
             match = [returnedMatch retain]; 
             match.delegate = self; // start!
         }
     }];

    tempVC = [[UIViewController alloc] init];

    GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
    if (mmvc != nil)
    {
        mmvc.matchmakerDelegate = self;
        [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view];
        [tempVC presentModalViewController:mmvc animated: YES];
    }

    [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[mpView node] withColor:ccWHITE]];
}

按“立即播放”时,出现此错误:

匹配错误:错误域=GKErrorDomain 代码=2“请求的操作已被取消。” UserInfo=0x2248d0 {NSLocalizedDescription=请求的操作已被取消。}

然后它就停留在“寻找玩家...”视图上。

#1楼 票数:1 已采纳

我从来没有用 GameCenter 做过什么,但也许我可以提供帮助。 当我收到错误时

“请求的操作已被取消”

在反向地理编码器中,我发现应用程序没有时间执行请求。 你通过执行findMatchForRequest:得到错误,所以也许你的请求变量没有完全设置,检查一下。 您还可以尝试将NSLog()放在第一行(在块中)并查看您传递的变量returnedMatcherror

  ask by Josh Kahane translate from so

未解决问题?本站智能推荐:

1回复

如何在多人游戏中同步数据(游戏中心的ios)

我一直在为Game Center开发游戏。 游戏说明:- 一个玩家是游戏的发起者,因为游戏具有5个分片地图(任一玩家(发起者)随机选择了一个分片地图)。 发起方将选定的地图发送给第二个玩家,现在该地图将在第二个玩家一侧绘制。(此时,两个玩家都具有相同的地图) 当我通过向玩家发
1回复

游戏中心和排行榜

我想在我的应用中实现游戏中心排行榜,但有一个问题: 由于该应用已在多个国家/地区销售,因此我希望允许用户看到一个“总体”排行榜,该排行榜将显示来自任何地方的所有用户,然后是一个“国家”排行榜,该排行榜仅显示该国家/地区的得分。 问题是:既然排行榜似乎只包含用户ID和得分,这是否意味着
1回复

游戏中心对接GKTurnBasedMatch有显着滞后(约1分钟)

我正在通过游戏中心实现多人模式的回合制游戏。 我有2个设备(1个ipad,1个iphone)在沙盒模式下进行测试,这些设备工作正常,但最近它开始在汽车配对过程中挣扎。 在我从一个用户发送第一个回合后,另一个设备不会立即识别该游戏,而是打开自己的新游戏。 之前它能够立即发现在其他设备上开始的
1回复

使用GameCenter进行基于平行回合的游戏?

我玩过使用GameCenter制作回合制游戏。 据我所知,默认情况下,GameCenter假设在一些参与者中,在任何给定时间,一个玩家持有“玩棒”,并且该玩家是唯一可以影响当前游戏状态的玩家。 游戏玩法是异步的,即转动它的人可以花时间,其他玩家一旦轮到他们就会得到通知。 到现在为止还挺
1回复

iOS游戏中心:创造终身成就

我正在尝试向我的iOS应用添加终身成就。 也就是说,自从他第一次玩游戏以来,用户执行了一次动作的次数。 换句话说,自从...以来他杀了多少人。 我使用的是基于Apple提供的代码的代码: .h文件: .m文件: 我的工作非常出色,没有任何警告,但是每次我关闭应用程序,
2回复

游戏中心实时比赛-多少名玩家?

我想为iPhone编写新游戏。 通过Game Center实时比赛API可以进行一场比赛的人数是多少?
2回复

游戏中心InviteFailed

我正在尝试发送游戏中心邀请。 从模拟器发送到设备或从设备发送到模拟器会导致InviteFailed错误。 可能是什么问题? 实施不正确? 互联网速度低? 或者是否无法使用模拟器测试Game Center邀请? 谢谢
2回复

游戏中心同时回合

我是iOS的新手(尽管我有很多C ++经验),并且我正在使用Gamecenter开发回合制纸牌游戏。 这是要抓住的地方-轮到该名玩家的是裁判,并在回合结束之前等待所有其他玩家打牌。 是否可以在Game Center中执行此操作,因此所有玩家都选择了同时进行的操作,一旦这样做,便会通知法官,做