我使用游戏套件创建了一个实时多人游戏。创建匹配等在两个设备上正常进行。然后if块:if (!self.matchStarted && match.expectedPlayerCount == 0)
永远不会被触发,除非我在SKScene
的更新方法中放置一个断点。在游戏开始运行时,我设置了一个断点。一旦调试器中断,我就“继续”(^ + CMD + Y)。 if块中的代码立即被触发。
-(void)match:(GKMatch *)match player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state
{
switch (state)
{
case GKPlayerStateConnected:
// Handle a new player connection.
break;
case GKPlayerStateDisconnected:
// A player just disconnected.
break;
}
//TODO We have to keep track of whether a match has started or not.
if (!self.matchStarted && match.expectedPlayerCount == 0)
{
self.matchStarted = YES;
self.gameState = _proposingBestHostState;
}
}
我的SKScene update:
方法实际上是一个NOP,因为它调用self.gameState上的方法,该方法在if块中设置之前为零。
self.matchStarted是具有以下属性的属性:
@property (nonatomic)bool matchStarted;