如何只在5秒后执行代码?

时间:2014-06-17 01:43:39

标签: unity3d wait unityscript

所以,在Unity中我有这个每次减去一点的饥饿代码。

#pragma strict

var Hunger:float;
var MaxHunger:float=100;
var timer:float;

function Start () 
{
    Hunger=MaxHunger;
}

function Update () 
{
    timer+=Time.deltaTime;
    if(timer>=10) 
    {
    Hunger-=1.0;
    }
}

我的问题是我只想每5秒从饥饿中减去1。我已经尝试将它设置为每秒取0.2,但它不起作用。我只需要等待五秒钟再减去1.谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用InvokeRepeating方法:

function SubtractHunger ()
{
    Hunger -= 1.0;
}

function Start () {
    Hunger = MaxHunger;
    var seconds:int = 5;
    InvokeRepeating("SubtractHunger", seconds, seconds);
}

// and then you don't need the Update function

或者,您可以使用timeLastSubtracted变量或类似内容在Update函数中进行检查:

var timeLastSubtracted:float;

function Update ()
{
    if (Time.time >= timeLastSubtracted + 5) {
        Hunger -= 1.0;
        timeLastSubtracted = Time.time;
    }
}