运行游戏时,Unity的检查器每隔几秒钟更新一次,但是totalTimeElapsed
仅以0.1秒的间隔递增。我用totalTimeElapsed += Time.deltaTime
尝试了类似的方法,但结果相同。
我如何获得自游戏开始以来的总时间?
float totalTimeELapsed = 0;
int dayCount = 0;
private void Update()
{
totalTimeElapsed = Time.time;
dayCount += 1;
AFunctionTakingLotsOfTime();
}
答案 0 :(得分:2)
AFunctionTakingLotsOfTime()
需要很长时间,因此您需要Time.realtimeSinceStartup
Time.realtimeSinceStartup
是实时处理的,而不是计算的帧速率时间量,由于您的函数需要很长时间,因此可能会搞砸。
或者,您可以使用DateTime
。
请注意,两者都不会受到时间尺度等因素的影响,并且您可能希望将函数的强度降低,例如在任何给定调用中仅计算一小块(或使用协程)或拆分方法移到Job thread上。
答案 1 :(得分:1)
float totalTime = 0f;
// Update is called once per frame
void Update () {
totalTime += Time.deltaTime;
}
我相信您正在寻找的东西会是这样的。假设此类在您的游戏运行时出现,则您应该有一个准确的变量,该变量可以告诉您自游戏开始以来经过的时间。
您可能还想知道更新调用每帧发生一次,即。如果您以60 FPS的速度运行,则在该秒内将调用60次更新。您可以尝试使用FixedUpdate,它会实时更新。