在Unity中重置计时器

时间:2013-10-23 12:17:17

标签: c# timer unity3d

我的计时器有些问题我想知道有人可以帮助我。我做了很多Goggle搜索,但主要的Unity答案网站已经为我完成了。

我试图设置一个计时器,一旦用光线击中物体,就开始计数到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");
}

1 个答案:

答案 0 :(得分:0)

您尚未发布任何计算您查看某个项目的时间的内容,因此我不确定我们在问题中缺少哪些代码。

那就是说,我怀疑问题是你的start_time始终为零(或接近零 - 它最初会被设置为调用Start方法的时间,这将近如果它立即生效,则为零。

如果您在start_time = Time.time方法中设置ResetTimer,那么您可以使用Time.time - start_time计算您查看对象的时长 - 这应该是您正在寻找的内容