菜鸟教程小白 发表于 2022-12-11 20:47:47

objective-c - GameKit:谁是大师?


                                            <p><p>我正在构建一个应用程序(顺便说一下,已经在应用程序商店中,称为 MotAMot):一个令人难以置信的免费应用程序。</p>

<p>这款游戏提出了多种游戏模式:独立、多人使用相同的 iDevice 和 MULTI,其中 2 名玩家同时玩同一个游戏板,但每个人都使用自己的 iDevice。</p>

<p>我正在使用 GKPeerPickerController 实例来管理两个设备之间的连接。</p>

<p>我唯一担心的是我无法决定谁是 iPhone 将扮演服务器角色,谁是客户端。当一个玩家向另一个玩家发送邀请时,这很酷,我可以决定这个玩家将成为服务器。</p>

<p>例如,玩家 1 邀请玩家 2 加入游戏。但与此同时(或几秒钟后),玩家 2 在其设备上显示邀请弹出窗口之前邀请了玩家 1。我的问题:我如何确定<strong>玩家 1 首先邀请了玩家 2</strong>(或相反)?我的意思是,我当然收到了一些回调,因为我正在实现 GKPeerPickerControllerDelegate 协议(protocol)。但是<em>似乎我在两台设备上都收到了相同的消息,无论谁真正启动了连接。</em></p>

<pre><code>// New connection
- (void)peerPickerController:(GKPeerPickerController *)picker
          didConnectPeer:(NSString *)peer
               toSession:(GKSession *)session
{
    // Set the session
    ;

    // I&#39;m implementing the GKSessionDelegate protocol
    ;

// I&#39;ll handle any received data from my enemy
    ;

// I&#39;m cleaning the room
    ;
    ;
    ;
    myPicker = nil;
}


// A peer changed its state
- (void)session:(GKSession *)session peer:(NSString *)peer didChangeState:    (GKPeerConnectionState)state
{
    switch (state)
    {
      case GKPeerStateConnected:
            ;
            break;
         case GKPeerStateDisconnected:
            // Libération de la session
            ;
            currentSession = nil;            
            break;
      case GKPeerStateAvailable:
            break;
      case GKPeerStateConnecting:
             break;
      case GKPeerStateUnavailable:
             break;
    }
}
</code></pre>

<p>有人对此有任何想法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你为什么不能用老式的方法解决这个问题?例如,文明 IV 会将您带到服务器机房屏幕,在这种情况下,您是等待客户端的服务器,您不接受任何新连接是有意义的。</p>

<p>我会做类似的事情。原来<a href="https://stackoverflow.com/questions/6052661/connection-trouble-with-gkpeerpickercontroller" rel="noreferrer noopener nofollow">this person</a>有一个问题(稍微相关),据我了解,它以类似的方式解决。</p></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - GameKit:谁是大师?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/8604980/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/8604980/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - GameKit:谁是大师?