基于时间的评分统一

时间:2017-01-13 19:05:08

标签: unity3d

嗨,我是一名团结的初学者,我希望自游戏开始以来每5秒就能为积分增加10分,这就是我试图实现它的方式

private int score;
void Update () {

    Timer = Time.time;

    if (Timer > 5f) {

        score += 5;
        Timer -= 5f;
    }
    ScoreText.text = score.ToString ();

 }

这是行不通的是5f之后得分迅速增加然后它会让我的游戏崩溃。

2 个答案:

答案 0 :(得分:3)

每5秒计算一次是错误的。您不应该在每个循环中执行Timer = Time.time;,这只会抛弃Timer的旧值。使用Time.deltaTime并将其添加到计时器中。

 //Be sure to assign this a value in the designer.
 public Text ScoreText;

 private int timer;
 private int score;

 void Update () {

    timer += Time.deltaTime;

    if (timer > 5f) {

        score += 5;

        //We only need to update the text if the score changed.
        ScoreText.text = score.ToString();

        //Reset the timer to 0.
        timer = 0;
    }
 }

答案 1 :(得分:0)

我知道我回答得有点晚,但是使用Mathf.FloorToInt(Time.timeSinceLevelLoad)

也可以