3

我正在用 C# 和 Unity 创建一个节奏游戏,但我无法找到我的一些玩家遇到的问题与他们的硬件之间的直接关联,但他们中的一些人遇到的问题是游戏玩法逐渐与随着时间的推移音乐。它通常需要几分钟才能被注意到,但它肯定会发生并破坏游戏的感觉。

我通过使用双精度并添加 Time.deltaTime (帧之间的时间)来跟踪经过的时间,并且我假设与这样做相关的精度误差非常小,这就是导致逐渐不同步的原因.

有没有更好的方法来做到这一点更准确?我在想获得游戏开始的时间,然后在每一帧上从当前时间中减去它可能会更准确?我已经尝试将游戏时间与音频时间同步(Bass.NET 提供了一种在几秒钟内获得歌曲位置的方法),但是虽然这对我和很多其他人有用,但它最终会让其他人的硬件卡顿(我的游戏通常即使在 8-10 岁的 PC 上也能正常运行)。

4

1 回答 1

1

根据您的需要,您可以使用Time.timeSinceLevelLoadTime.realtimeSinceStartup(尽管建议您改用 Time.time )或最有可能的 Time.time。如果你使用 Time.timeScale 来暂停你的游戏,你可以使用Time.unscaledTime

Time.realtimeSinceStartup 和 Time.time 之间的区别在于,即使您使用 Time.timeScale 暂停游戏,Time.realtimeSinceStartup 也会继续计数。假设用户可能会暂停您的游戏,这可能会或可能不会阻止您的音频播放,这将有助于您制定是否要使用哪个属性的策略。您可能希望设置Application.runInBackgroundtrue以获得最可靠的结果,具体取决于您的游戏逻辑。

于 2017-10-15T09:44:17.673 回答