我花了大约2个小时试图解决这个问题,但我做不到。我在Unity3d(2D)上制作了一个非常简单的拖动赛车。只是一个传感器被打破以启动计时器和沿途的几个增量时间。我已经让对手工作得很好,我可以跟踪调试日志传递的增量;但是,我无法让计时器正常工作。
static function Timer(Cone : String){
if(Cone == "StageBeamBroken" ){
var StartTime = Time.realtimeSinceStartup;
}
Debug.Log(Cone + ": " + ( Time.realtimeSinceStartup - StartTime));}
基本上Timer(可能命名很差)函数应该接受一个String(增量的名称),然后启动计时器,然后每次与另一个增量冲突时打印(DebugLog)时间。
没有编译器错误。
输出是这样的:
StageBeamBroken: 2.6E-06
FirstIncrement: 4.89
SecondIncrement: 6.26
Final Increment: 7.26
正如您所看到的,第一次运行时,当它看到“StageBeamBroken”时(Time.time-StartTime)完美运行并输出0(基本上)。但是,然后它跳到(似乎是)自启动以来的实际运行时间而没有减去StartTime(第二个增量应该大大少于2秒。如果我坐着,不打破启动波束说40秒,40秒将加入第二增量......请帮助!
谢谢大家!
答案 0 :(得分:1)
您应该在StartTime
函数之外声明Timer(String)
变量,因为您的程序仅在StartTime
时只获取Cone == "StageBeamBroken"
一次。在功能完成之后,StartTime
的值就会丢失。