C# 统一重置计时器
我的计时器有点问题,我想有人能帮我一下。我已经做了很多Goggle搜索,但是Unity answers的主要网站已经为我做了 我试着设置一个计时器,当我用射线击中一个物体时,开始数到10。当我不再用光线击中物体时,我希望计时器停止计数。如果我再次击中同一物体,我希望计时器从头开始 我现在拥有的是一个计时器,它只在我看一个物体时开始。当我看向别处,时间达到3秒时,这将显示在我的检查器字段中。但是,当我回头看同一个物体时,时间会跳到我看物体和不看物体之间的时间间隔 谁能看看我的逻辑,看看我是否遗漏了什么C# 统一重置计时器,c#,timer,unity3d,C#,Timer,Unity3d,我的计时器有点问题,我想有人能帮我一下。我已经做了很多Goggle搜索,但是Unity answers的主要网站已经为我做了 我试着设置一个计时器,当我用射线击中一个物体时,开始数到10。当我不再用光线击中物体时,我希望计时器停止计数。如果我再次击中同一物体,我希望计时器从头开始 我现在拥有的是一个计时器,它只在我看一个物体时开始。当我看向别处,时间达到3秒时,这将显示在我的检查器字段中。但是,当我回头看同一个物体时,时间会跳到我看物体和不看物体之间的时间间隔 谁能看看我的逻辑,看看我是否遗漏了
void Start()
{
start_time = Time.deltaTime;
running_time = 0;
}
void Update ()
{
bool updateTimer = (track_timer && lastHitObject != null);
Check(updateTimer);
}
// check to see which object my ray has hit
void HighLight(GameObject nextHitObject)
{
// Case1: Last ray and new ray both hit objects
if(lastHitObject != null && nextHitObject != null){
//1a: same objects, do nothing
if(lastHitObject.tag == nextHitObject.tag)return;
{ //1b: different objects, swap highlight texture
lastHitObject.renderer.material = oldMat;
lastHitObject = nextHitObject;
oldMat = lastHitObject.renderer.material;
lastHitObject.renderer.material = highlight_material;
track_timer = true;
return;
}
}
// Case2: Last ray hit nothing, new ray hit object.
if(lastHitObject == null && nextHitObject != null){
ResetTimer();
lastHitObject = nextHitObject;
oldMat = lastHitObject.renderer.material;
lastHitObject.renderer.material = highlight_material;
track_timer = true;
return;
}
// Case3: Last ray hit something, new ray hit nothing
if(lastHitObject != null && nextHitObject == null){
lastHitObject.renderer.material = oldMat;
lastHitObject = null;
track_timer = false;
return;
}
}
void ResetTimer()
{
start_time = 0;
running_time = 0f;
//Debug.Log("resetting timer");
}
您还没有发布任何可以计算您查看某个项目的时间的内容,因此我不确定问题中缺少了哪些代码 也就是说,我怀疑问题在于
start\u time
始终为零(或接近零-最初将设置为调用start
方法的时间,如果该方法立即激活,则该时间将接近零)
如果在ResetTimer
方法中设置start\u time=time.time
,则可以使用time.time-start\u time
-计算您查看对象的时间,这应该是您要查找的