我有这个脚本用于跟踪我的分数,我将它附加到我的播放器对象,当然还有我的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;
}
}
答案 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的值。