【问题标题】:Game Center Host游戏中心主机
【发布时间】:2011-10-22 02:50:45
【问题描述】:

我目前正在创建一个 Game Center 游戏,并且正在使用可用的点对点功能。但是,我想选择其中一名玩家(2名玩家)作为主持人,以确保同步。

从可用的播放器中选择主机(甚至是随机)并确保其他设备知道选择了哪个主机的最佳方法是什么?

【问题讨论】:

    标签: iphone ios game-center


    【解决方案1】:

    This 是一个不错的简单教程,其中包含演示如何执行此操作的代码。他们随机选择其中一个节点作为主机。希望有帮助!

    【讨论】:

    • 谢谢,随机数技巧应该有效:)。我想我一直沉浸在试图找到一个恒定且持久的类似 playerID 的字符串,然后比较它,以至于我什至没有想到这一点。再次感谢
    • 没问题,很高兴能帮上忙!
    【解决方案2】:

    已经发布了答案,这里仍然是执行该操作的示例代码

    NSString *uid = [[UIDevice currentDevice] uniqueIdentifier];
    CoinTossID = [uid hash];
    

    现在在委托函数中

    - (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID
        {
            NSMutableArray *ReceivedArray = [[NSMutableArray alloc] init];
            ReceivedArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
            int flag = [[ReceivedArray objectAtIndex:0] intValue];
            [ReceivedArray removeObjectAtIndex:0];
    
            int CoinValue = [ReceivedCoinTossID intValue];
            if(CoinValue > CoinTossID)
            {
               isPlayer1 = YES;
            }
            else
            {
                  isPlayer1 = NO;
            }
        }
    

    【讨论】:

    • 谢谢,使用设备 ID 也应该可以。但是,请注意 [[UIDevice currentDevice] uniqueIdentifier] 在 iOS 5 中已弃用。也许使用 [GKLocalPlayer localPlayer].playerID 会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多