iOS 中使用游戏包和游戏中心进行配对时出现问题

发布于 2024-12-06 09:03:41 字数 2021 浏览 1 评论 0原文

目前,我正在尝试使用 gameKit/GameCenter 进行配对,将在线多人游戏添加到我的 iOS 游戏(使用 UIKit)中。我正在尝试展示游戏中心的匹配界面,但取得了不同程度的成功。我有两个视图控制器(带有各自的 .xib 文件):mainMenuViewControlleronlineViewController,以及一个名为 GCHelper.h 的文件。

在 CGHelper 中,我有这个:

- (void)findMatchWithMinPlayers:(int)minPlayers
                     maxPlayers:(int)maxPlayers 
                 viewController:(UIViewController *)viewController             
                       delegate:(id<GCHelperDelegate>)theDelegate 
{
    if (!gameCenterAvailable) return;   

    self.presentingViewController = viewController;
    delegate = theDelegate;               
    [presentingViewController dismissModalViewControllerAnimated:NO];

    GKMatchRequest *request = [[GKMatchRequest alloc] init]; 
    request.minPlayers = minPlayers;     
    request.maxPlayers = maxPlayers;

    GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithMatchRequest:request];    
    mmvc.matchmakerDelegate = self;

    [presentingViewController presentModalViewController:mmvc animated:YES];
}

我在视图中使用此函数来显示匹配界面。起初我在 mainMenuViewController 中尝试了它,这是我使用这个的第一个视图控制器:

[[GCHelper sharedInstance] findMatchWithMinPlayers:2 maxPlayers:2 viewController:self delegate:self];

效果很好,但这不是我想要做的地方,所以我在 onlineViewController 中尝试了完全相同的事情 没有任何反应,没有错误,只是 onlineViewController.view 的空白视图盯着我。我对此相当陌生,所以我想知道这是否取决于我处理视图的方式,这是我用来从 mainMenu 切换到其他视图的代码:

-(IBAction)showOnlineView 
{
    OnlineViewController *onlineViewController = [[OnlineViewController alloc] initWithNibName:@"OnlineViewController" bundle:nil];
    UIView *currentView = self.view;
    UIView *theWindow = [currentView superview];
    [currentView removeFromSuperview];
    [theWindow addSubview:onlineViewController.view];
}

任何帮助都会不胜感激。另外,我不确定如果用户按下取消键,我应该如何处理返回主菜单(尽管一旦我完成这项工作,这可能会变得不言而喻,我只是想我会提到它,以防万一缺少我的知识很明显我对整件事的处理是错误的)。

At the moment I'm trying to add online multiplayer to my iOS game (that uses UIKit) using gameKit/GameCenter for matchmaking. I'm trying to present game center's matchmaker interface but with varied success. I have two view controllers (with respective .xib files), mainMenuViewController and onlineViewController, along with a file called GCHelper.h.

In CGHelper I have this:

- (void)findMatchWithMinPlayers:(int)minPlayers
                     maxPlayers:(int)maxPlayers 
                 viewController:(UIViewController *)viewController             
                       delegate:(id<GCHelperDelegate>)theDelegate 
{
    if (!gameCenterAvailable) return;   

    self.presentingViewController = viewController;
    delegate = theDelegate;               
    [presentingViewController dismissModalViewControllerAnimated:NO];

    GKMatchRequest *request = [[GKMatchRequest alloc] init]; 
    request.minPlayers = minPlayers;     
    request.maxPlayers = maxPlayers;

    GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithMatchRequest:request];    
    mmvc.matchmakerDelegate = self;

    [presentingViewController presentModalViewController:mmvc animated:YES];
}

I use this function in my views to show the matchmaking interface. At first I tried it in mainMenuViewController, which is my first view controller using this:

[[GCHelper sharedInstance] findMatchWithMinPlayers:2 maxPlayers:2 viewController:self delegate:self];

And that worked fine but that's not where I wanted to do it, so I tried the exact same thing from onlineViewController and nothing happens, no error, just the blank view of onlineViewController.view stares back at me. I'm fairly new at this so I'm wondering if it's down to how I'm dealing with the views, here's the code I use to switch from the mainMenu to the other view:

-(IBAction)showOnlineView 
{
    OnlineViewController *onlineViewController = [[OnlineViewController alloc] initWithNibName:@"OnlineViewController" bundle:nil];
    UIView *currentView = self.view;
    UIView *theWindow = [currentView superview];
    [currentView removeFromSuperview];
    [theWindow addSubview:onlineViewController.view];
}

Any help would be greatly appreciated. Also, I'm not sure how I should deal with going back to the main menu if the user presses cancel (although that may become self evident once I've got this working, I just thought I'd mention it in case this lack of knowledge on my part makes it obvious I'm going about the whole thing incorrectly).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文