试图为我的 Game Center 游戏设置时间限制
Trying to set a time limit on my Game Center game
我创建了一款 2 人回合制游戏。我希望每个玩家有 24 小时的时间轮到他们。如果他们不满足这个时间限制,我想结束比赛。
。
我试过使用 NSTimer,将下面的函数作为选择器。
func timerCalled() {
for part in currentMatch!.participants! {
(part ).matchOutcome = .Tied
}
currentMatch?.endMatchInTurnWithMatchData(data!, scores: nil, achievements: nil, completionHandler: { (error) -> Void in
if error != nil {
print(error)
}
self.statusLabel?.text = "Game has ended"
})
}
但是,当此函数为 运行 时,我的游戏崩溃了,并在控制台上打印了以下内容:“请求的操作无法完成,因为会话处于无效状态”。它崩溃是因为我在玩家轮到他之后开始计时,所以当 "he" 结束游戏时不再轮到他了。我确信如果我让当前玩家在时间到了时结束游戏,它会起作用,但是 how/when 我要启动计时器吗?当玩家 1 轮到他时,我必须为玩家 2 启动计时器。我该怎么做?
遗憾的是,在撰写本文时,Game Center 不支持您想要执行的操作。
您使用计时器的方法不会有效,因为正如您所见,您不能依赖玩家 2 轮到他们启动计时器或在计时器触发时激活。而且,如您所见,玩家 1 不能强制玩家 2 的回合结束。
您可以在调用 endTurnWithNextParticipants
时设置 turnTimeout
参数,基本上就是说 "I'm done with this turn and the next player has this length of time to complete their turn." 但是,根据 WWDC 视频之一,一个回合永远不会超时。所以,在双人游戏中(在任何回合制比赛中,真的),最后一个玩家总是有竞争优势,因为他们永远不会超时。
作为变通方法,我从比赛数据中获取前一个玩家的最后回合日期,向其添加超时值,然后检查当前时间是否超出该时间。如果是,我就在那儿取消转弯。然而,玩家 2 可能已经等了几天甚至几周才重新开始游戏。或者他们可能永远不会 return。在这种情况下,回合制游戏将陷入困境,之前的玩家无法继续 unless/until 最后的玩家 returns.
我创建了一款 2 人回合制游戏。我希望每个玩家有 24 小时的时间轮到他们。如果他们不满足这个时间限制,我想结束比赛。
。
我试过使用 NSTimer,将下面的函数作为选择器。
func timerCalled() {
for part in currentMatch!.participants! {
(part ).matchOutcome = .Tied
}
currentMatch?.endMatchInTurnWithMatchData(data!, scores: nil, achievements: nil, completionHandler: { (error) -> Void in
if error != nil {
print(error)
}
self.statusLabel?.text = "Game has ended"
})
}
但是,当此函数为 运行 时,我的游戏崩溃了,并在控制台上打印了以下内容:“请求的操作无法完成,因为会话处于无效状态”。它崩溃是因为我在玩家轮到他之后开始计时,所以当 "he" 结束游戏时不再轮到他了。我确信如果我让当前玩家在时间到了时结束游戏,它会起作用,但是 how/when 我要启动计时器吗?当玩家 1 轮到他时,我必须为玩家 2 启动计时器。我该怎么做?
遗憾的是,在撰写本文时,Game Center 不支持您想要执行的操作。
您使用计时器的方法不会有效,因为正如您所见,您不能依赖玩家 2 轮到他们启动计时器或在计时器触发时激活。而且,如您所见,玩家 1 不能强制玩家 2 的回合结束。
您可以在调用 endTurnWithNextParticipants
时设置 turnTimeout
参数,基本上就是说 "I'm done with this turn and the next player has this length of time to complete their turn." 但是,根据 WWDC 视频之一,一个回合永远不会超时。所以,在双人游戏中(在任何回合制比赛中,真的),最后一个玩家总是有竞争优势,因为他们永远不会超时。
作为变通方法,我从比赛数据中获取前一个玩家的最后回合日期,向其添加超时值,然后检查当前时间是否超出该时间。如果是,我就在那儿取消转弯。然而,玩家 2 可能已经等了几天甚至几周才重新开始游戏。或者他们可能永远不会 return。在这种情况下,回合制游戏将陷入困境,之前的玩家无法继续 unless/until 最后的玩家 returns.