返回

Swift 游戏开发之「能否关个灯」——计时器篇

IOS

在上一篇教程中,我们构建了游戏的核心逻辑,配置了关卡,并实现了游戏的胜利和失败判断。现在,我们继续深入探索,添加一个计时器,记录玩家在游戏中的耗时,营造一种紧张的氛围,让游戏更具吸引力。

计时器实现

Swift 中的计时器是一个强大的工具,可以让我们在指定的时间间隔内执行特定的代码块。要创建计时器,我们可以使用 Timer 类:

let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
    // 计时器代码
}

在这个代码片段中,我们创建了一个每秒触发一次的计时器。在每次触发时,计时器都会执行闭包中的代码块。

更新游戏状态

为了在计时器中更新游戏状态,我们需要访问游戏的主体对象。我们可以通过以下方式实现:

class GameController {
    
    var timer: Timer?
    
    func startTimer() {
        timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] timer in
            guard let self = self else { return }
            // 更新游戏状态
        }
    }
    
    func stopTimer() {
        timer?.invalidate()
    }
}

在这个类中,我们创建了一个计时器属性 timer,并提供了 startTimer()stopTimer() 方法来控制计时器的启动和停止。在计时器的闭包中,我们使用弱引用([weak self])来防止循环引用。

游戏时间记录

在计时器闭包中,我们可以更新游戏的时间记录:

self.gameTime += 1

我们使用了一个 gameTime 属性来存储玩家的游戏时间。每次计时器触发时,我们都会将这个属性加 1。

显示游戏时间

为了让玩家看到自己的游戏时间,我们需要在游戏中显示它。我们可以使用一个 UILabel:

let timeLabel = UILabel()
timeLabel.text = "时间:0秒"

在计时器闭包中,我们可以更新标签的文本:

timeLabel.text = "时间:\(self.gameTime)秒"

总结

通过添加一个计时器,我们为「能否关个灯」游戏增添了一层紧张感。玩家现在可以实时跟踪自己的游戏时间,这有助于营造一种紧迫感和竞争性。在下一篇教程中,我们将探讨如何为游戏添加声音效果,让游戏体验更加丰富。