为什么我的代码没有跟踪分数?

时间:2015-05-29 02:15:47

标签: c# unity3d

我有这个脚本用于跟踪我的分数,我将它附加到我的播放器对象,当然还有我的UI文本对象。我没有任何错误,但文本没有改变,它保持在0。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class ScoreTracker : MonoBehaviour {

    public Text scoreText;

    static int playerScore = 0;

    void Start () {

        scoreText.text = playerScore.ToString ();

    }


    void Update () {

        playerScore += (int)Time.deltaTime;

    }
}

3 个答案:

答案 0 :(得分:3)

Start()只会运行一次,因此如果您想在Update()更新标签,则应在提高分数后添加scoreText.text = playerScore.ToString ();

答案 1 :(得分:3)

Update()方法每秒调用大约60次(取决于你的fps设置),deltaTime与上次Update调用的时间不同。因此,大部分时间deltaTime值= 1/60,并且要转换为int,它将始终为0.尝试以下代码:

public class ScoreTracker : MonoBehaviour
{
    public Text scoreText;
    static int playerScore = 0;

    public int nextScoreAtSecond = 1;
    float timeIncrease;


    void Start()
    {
        timeIncrease = 0;
        UpdateScore();
    }


    void Update()
    {
        timeIncrease += Time.deltaTime;
        if (timeIncrease > nextScoreAtSecond)
        {
            // reset the time counter
            timeIncrease = 0;
            playerScore = playerScore + 1;
            UpdateScore();
        }
    }

    void UpdateScore()
    {
        scoreText.text = playerScore.ToString();
    }
}

答案 2 :(得分:2)

如果你只是递增它会起作用吗?

playerscore++;

Time.deltaTime可能返回小于1的值。