如何让我的文本在 Unity 中显示我的分数?
How to I get my text to display my score in Unity?
我正在编写一个游戏,我希望文本显示玩家分数,该分数会随着时间的推移而增加。但是,它不起作用。为什么它不起作用?
#pragma strict
import UnityEngine.UI;
var score = 0;
var highScore : int;
var text : Text;
function Start() {
highScore = PlayerPrefs.GetInt("High Score");
text = GetComponent(Text);
text.text = score.ToString();
}
function Update() {
score += Time.deltaTime;
if (score >= highScore) {
highScore = score;
PlayerPrefs.SetInt("High Score", highScore);
}
text.text = score.ToString();
}
我一直收到错误消息:
NullReferenceException: 对象引用未设置为对象的实例
定时器和Scoreboard.Update()(在Assets/Scripts/Timer和Scoreboard.js:17)
我可以看到您已经将名为 Score 的 Text
组件分配给了编辑器中的 text
插槽,但是当您在 Start 函数中执行 text = GetComponent(Text);
时您覆盖了它。只需删除 text = GetComponent(Text);
,您的代码就可以正常工作。
如果您想知道为什么 text = GetComponent(Text);
返回 null,那是因为没有 Text
组件附加到脚本附加到的相同游戏对象(主摄像机)。 text = GameObject.Find("In-Game UI/Score").GetComponent(Text);
应该可以正常工作。您不必执行此操作,因为您已经从编辑器中分配了 Text
。
我正在编写一个游戏,我希望文本显示玩家分数,该分数会随着时间的推移而增加。但是,它不起作用。为什么它不起作用?
#pragma strict
import UnityEngine.UI;
var score = 0;
var highScore : int;
var text : Text;
function Start() {
highScore = PlayerPrefs.GetInt("High Score");
text = GetComponent(Text);
text.text = score.ToString();
}
function Update() {
score += Time.deltaTime;
if (score >= highScore) {
highScore = score;
PlayerPrefs.SetInt("High Score", highScore);
}
text.text = score.ToString();
}
我一直收到错误消息:
NullReferenceException: 对象引用未设置为对象的实例 定时器和Scoreboard.Update()(在Assets/Scripts/Timer和Scoreboard.js:17)
我可以看到您已经将名为 Score 的 Text
组件分配给了编辑器中的 text
插槽,但是当您在 Start 函数中执行 text = GetComponent(Text);
时您覆盖了它。只需删除 text = GetComponent(Text);
,您的代码就可以正常工作。
如果您想知道为什么 text = GetComponent(Text);
返回 null,那是因为没有 Text
组件附加到脚本附加到的相同游戏对象(主摄像机)。 text = GameObject.Find("In-Game UI/Score").GetComponent(Text);
应该可以正常工作。您不必执行此操作,因为您已经从编辑器中分配了 Text
。