Unity Time.time 未按预期工作

Unity Time.time not working as expected

我花了大约 2 个小时试图解决这个问题,但我做不到。我正在 Unity3d(2D) 上制作一个非常非常简单的直线加速赛车。只需打破一个传感器即可启动计时器并在此过程中增加几个时间。我让碰撞器工作正常,我可以跟踪我通过 DebugLog 传递的增量;但是,我无法让计时器正常工作。

static function Timer(Cone : String){

if(Cone == "StageBeamBroken" ){

    var StartTime = Time.realtimeSinceStartup;
}

Debug.Log(Cone + ": " + ( Time.realtimeSinceStartup - StartTime));}

基本上,定时器(可能命名不当)函数应该接收一个字符串(增量的名称),然后启动定时器,然后在每次与另一个增量发生碰撞时打印(调试日志)。

没有编译器错误。

输出是这样的:

StageBeamBroken: 2.6E-06
FirstIncrement: 4.89
SecondIncrement: 6.26
Final Increment: 7.26

正如您第一次看到它 运行 时,当它看到 "StageBeamBroken" 时,(Time.time-StartTime) 完美运行并输出 0(基本上)。但是,然后它跳到(看起来像)自启动以来的真实 运行 时间而不减去 StartTime(第二个增量应该大大小于 2 秒。如果我坐着,没有打破开始光束说 40 秒, 40 秒将添加到第二个增量...请帮助!

谢谢大家!

您应该在 Timer(String) 函数外声明 StartTime 变量,因为您的程序仅在 Cone == "StageBeamBroken" 时获得 StartTime 一次。在函数完成后,StartTime 的值就丢失了。