跟踪经过的时间C#/ Unity

时间:2017-10-15 09:11:39

标签: c# unity3d time elapsed

我在C#和Unity中创建了一个节奏游戏,我还没有找到我的一些玩家所遇到的问题和他们的硬件之间的直接关联,但是其中一些问题存在问题随着时间的推移,游戏逐渐从音乐中逐渐消失。它通常需要几分钟才能引起注意,但它肯定会发生并破坏游戏的感觉。

我通过使用双精度并将Time.deltaTime(帧之间的时间)添加到它来跟踪已用时间,并且我假设只有非常小的精度误差与这样做有关,以及导致逐步解除的原因。

有更好的方法可以做到更准确吗?我认为获得游戏开始的时间,然后在每个帧上减去当前时间的那个可能会让它更准确吗?我尝试将游戏时间同步到音频时间(Bass.NET提供了一种在几秒钟内获得歌曲位置的方法),但是虽然这对我和其他一些人有用,但它最终会让其他人得到适当的硬件口吃(我的游戏通常在8-10岁的PC上运行得很好。

1 个答案:

答案 0 :(得分:1)

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

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