我正在使用 GameKit 制作多人游戏。我的问题是,当连接两个设备时,游戏开始运行时会有轻微的时差。一些设备稍后开始运行游戏。但这不是我想要的。我希望它在两个设备上同时启动。所以我要做的第一件事是检查两个设备上的开始时间,如下所示:
startTime = [NSDate timeIntervalSinceReferenceDate];
这就是它的外观:
361194394.193559
然后我将startTime
值发送到另一台设备,然后将接收到的值与另一台设备的 startTime 进行比较。
- (void)balanceTime:(double)partnerTime
{
double time_diff = startTime - partnerTime;
if (time_diff < 0)
startTimeOut = -time_diff;
}
因此,如果两个启动时间之间的差异为负数,则意味着该设备启动较早,因此它必须等待分配给startTimeOut
变量的差异,即 adouble
并且通常类似于2.602417
。然后我在更新方法中暂停我的游戏
- (void)update:(ccTime)dt
{
if (startTimeOut > 0)
{
NSLog(@"START TIME OUT %f", startTimeOut);
startTimeOut -= dt;
return;
}
}
但不幸的是,它没有帮助。此外,它甚至扩大了设备启动时间之间的差异。我就是不明白为什么。似乎我所做的一切都是合理的。我究竟做错了什么?我该如何纠正?你会怎么办?非常感谢