我正在用C#和Unity创建一个节奏游戏,我还没有找到我的一些玩家的问题和他们的硬件之间的直接联系,但他们中的一些人在游戏中随着时间的推移逐渐与音乐脱离同步的问题。它通常需要几分钟才能引起注意,但它肯定会发生,并破坏游戏的感觉。
我使用一个双精度数并加上Time.deltaTime (帧之间的时间)来跟踪经过的时间,我假设这样做只有很小的精度误差,这就是导致逐渐去同步的原因。
有没有一种更好的更准确的方法呢?我在想,获取游戏开始的时间,然后在每一帧中从当前时间减去它可能会更准确?我试过同步游戏时间和音频时间(Bass.NET提供了一种以秒为单位获取歌曲位置的方法),但虽然这对我和其他许多人都有效,但最终导致其他人硬件卡顿(我的游戏通常在8-10岁的电脑上运行得很好)。
发布于 2017-10-15 17:44:18
根据您的需要,您可以使用Time.timeSinceLevelLoad、Time.realtimeSinceStartup (尽管建议您使用Time.time )或最有可能的Time.time。如果您使用Time.timeScale暂停游戏,您可以使用Time.unscaledTime。
Time.realtimeSinceStartup和Time.time的不同之处在于,即使你用Time.timeScale暂停游戏,Time.realtimeSinceStartup也会继续计数。假设用户可能会暂停您的游戏,这可能会也可能不会阻止您的音频播放,这将帮助您确定是否要使用哪个属性。您可能希望将Application.runInBackground设置为true以获得最可靠的结果,这取决于您的游戏逻辑。
https://stackoverflow.com/questions/46753465
复制相似问题