[英]Keeping track of elapsed time C#/Unity
我正在C#和Unity中创建一个节奏游戏,我无法找到我的一些玩家所拥有的问题和他们的硬件之间的直接关联,但是他们中的一些人在游戏玩法中逐渐脱离了问题。随着时间的推移 它通常需要几分钟才会引起注意,但它肯定会发生并破坏游戏的感觉。
我通过使用双精度并将Time.deltaTime(帧之间的时间)添加到它来跟踪已用时间,并且我假设与此相关的精度误差非常小,这就是导致逐渐解除的因素。
有没有更好的方法来做到更准确? 我正在考虑获得游戏开始的时间,然后在每一帧上减去当前时间可能会使其更准确? 我已经尝试将游戏时间同步到音频时间(Bass.NET提供了一种在几秒钟内获得歌曲位置的方法),但是虽然这对我和其他一些人有用,但它最终会使其他人拥有体面的硬件口吃(我的游戏)通常在8-10岁的PC上运行良好)。
根据您的需要,您可以使用Time.timeSinceLevelLoad , Time.realtimeSinceStartup (尽管建议您使用Time.time),或者最有可能使用Time.time 。 如果您使用Time.timeScale暂停游戏,则可以使用Time.unscaledTime 。
Time.realtimeSinceStartup和Time.time之间的区别在于,即使您使用Time.timeScale暂停游戏,Time.realtimeSinceStartup也会继续计数。 假设用户可能暂停您的游戏,这可能会或可能不会阻止您的音频播放,这将有助于您制定策略以确定是否要使用哪个属性。 您可能希望将Application.runInBackground
设置为true
以获得最可靠的结果,具体取决于您的游戏逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.