时间在Unity Inspector中无法正确更新

时间:2019-03-11 05:31:49

标签: c# unity3d

运行游戏时,Unity的检查器每隔几秒钟更新一次,但是totalTimeElapsed仅以0.1秒的间隔递增。我用totalTimeElapsed += Time.deltaTime尝试了类似的方法,但结果相同。

我如何获得自游戏开始以来的总时间?

float totalTimeELapsed = 0;
int dayCount = 0;

private void Update()
{
    totalTimeElapsed = Time.time;
    dayCount += 1;

    AFunctionTakingLotsOfTime();
}

2 个答案:

答案 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,它会实时更新。