0

我目前正在创建一个游戏,它使用几个不同的计时器来增加几个数字,同时在屏幕上显示为 3D 文本。当屏幕上只有一个数字出现时,它可以完美运行,并且数字会非常无缝地计数。但是,当存在多个数字并因此运行多个计时器时,这些数字确实会出现故障,并且它们都计数显示相同的数字,即使它们具有不同的值。

我使用这个启动计时器:

p1Price = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(p1PriceCalculator), userInfo: nil, repeats: true)

并使用它来更改文本:

    @objc func p1PriceCalculator() {
        var smallHouse1Incremental: Int = Int(arc4random_uniform(UInt32(100)))
        
        smallHousePrice1 = smallHousePrice1 + smallHouse1Incremental
  
        smallHouse1Incremental += Int(arc4random_uniform(UInt32(100)))

        if let smallHouse1TextGeometry = smallHouseText1.geometry as? SCNText {
            smallHouse1TextGeometry.string = String(smallHousePrice1)
        }
    }

整个代码中有几个相同的设置,唯一的变化是节点的名称。

有谁知道为什么会这样?

谢谢!

4

1 回答 1

0

这在 0.2 时很常见,但它是可行的——我有 10-12 台同时运行,循环中有一些不错的东西。我没有看到一个容差设置来赋予它任何灵活性 - 文档(为计时器设置容差允许它在预定的触发日期之后触发。在计时器触发时允许系统灵活性增加了系统优化的能力以提高节电和响应能力。)-还要确保您的时间在主线程中运行-我不记得它们是否不起作用,或者它们是否偶尔起作用-但如果不这样做,则DEF会出现问题。

除此之外,您可能需要查看您的电话,看看您是否在其他地方做得太多。当它起雾时,您是否运行仪器来查看您是否正在丢失内存或占用 CPU?

于 2021-01-04T21:23:47.593 回答