Unity3D更新得分错误

时间:2017-04-02 14:05:26

标签: c# unity3d

我在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;
        }
    }

如果我删除它,错误将消失。它不会导致故障或任何事情,我只是好奇,因为我愿意学习。请帮帮我们

3 个答案:

答案 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;
}

Inspector screenshot

之后,您需要将公开gameObject和文本分配给您的脚本,因此选择您提供脚本的实例并检查检查器,您将看到 [none(Text)] ,点击它并选择UItext

玩得开心!

答案 2 :(得分:0)

当您尝试访问未正确初始化的对象/引用时,会发生着名的空引用异常错误。就像Unity文档所述

  

当您尝试访问引用时,会发生 NullReferenceException   未引用任何对象的变量。如果是引用变量   没有引用对象,那么它将被视为 null 。该   运行时会告诉您,您正在尝试访问对象,何时   通过发出 NullReferenceException 来变量为null。(more

现在特别在您的问题中,您正在尝试访问未正确分配的 scoreText 对象。确保您已在附加脚本的检查器中指定了 scoreText