C# 统一重置计时器

C# 统一重置计时器,c#,timer,unity3d,C#,Timer,Unity3d,我的计时器有点问题,我想有人能帮我一下。我已经做了很多Goggle搜索,但是Unity answers的主要网站已经为我做了 我试着设置一个计时器,当我用射线击中一个物体时,开始数到10。当我不再用光线击中物体时,我希望计时器停止计数。如果我再次击中同一物体,我希望计时器从头开始 我现在拥有的是一个计时器,它只在我看一个物体时开始。当我看向别处,时间达到3秒时,这将显示在我的检查器字段中。但是,当我回头看同一个物体时,时间会跳到我看物体和不看物体之间的时间间隔 谁能看看我的逻辑,看看我是否遗漏了

我的计时器有点问题,我想有人能帮我一下。我已经做了很多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
-计算您查看对象的时间,这应该是您要查找的