我在youtube上关注Charger Games的教程,这是关于街头赛车安卓游戏,我在Unity3D的控制台上看到这个错误,它说是NullReferenceException: Object reference not set to an instance of an object UIManager.scoreUpdate ()
这是包含导致错误的行的代码
public Text scoreText;
int score;
void Start () {
score = 0;
InvokeRepeating("scoreUpdate", 1.0f, 0.5f);
}
void Update () {
scoreText.text = "Score: " + score; //this is the line. If I erase this the error will disappear
}
void scoreUpdate () {
if (gameOver == false) {
score += 1;
}
}
如果我删除它,错误将消失。它不会导致故障或任何事情,我只是好奇,因为我愿意学习。请帮帮我们
答案 0 :(得分:0)
很难从这个小代码中说出来。您正试图访问(并设置)一个属性" Text"某些对象,但字段scoreText可能不指向任何此类对象。如果你有一个int数组,例如int [] myArray = null,就会发生同样的事情。然后试图阅读它的属性"长度"像这样:myArray.Length也会导致null引用错误。您需要首先使字段引用该对象。
在Unity中,您可能忘记将GameObject拖到字段" scoreText"你的脚本建立参考?
答案 1 :(得分:0)
确保gameObject
不是空的,gameObject
不会被魔法选中!所以试试这个
public Text scoreText;
private score;
void Start() {
score = 5; //example
}
void Update() {
scoreText.text = "Score: " + score;
}
之后,您需要将公开gameObject
和文本分配给您的脚本,因此选择您提供脚本的实例并检查检查器,您将看到 [none(Text)] ,点击它并选择UItext
玩得开心!
答案 2 :(得分:0)
当您尝试访问未正确初始化的对象/引用时,会发生着名的空引用异常错误。就像Unity文档所述
当您尝试访问引用时,会发生 NullReferenceException 未引用任何对象的变量。如果是引用变量 没有引用对象,那么它将被视为 null 。该 运行时会告诉您,您正在尝试访问对象,何时 通过发出 NullReferenceException 来变量为null。(more)
现在特别在您的问题中,您正在尝试访问未正确分配的 scoreText 对象。确保您已在附加脚本的检查器中指定了 scoreText 。