如何解决文本对象上的空引用错误?

时间:2019-07-24 15:08:53

标签: c# unity3d

对不起,这个问题。

我试图使游戏结束后的面板显示玩家的最终得分,我复制了brackeys视频中的一些代码,但仍然无法正常工作。

我尝试将text变量初始化为null,还尝试了一些不同的语法。

这是在玩家玩游戏时显示分数的脚本。这部分的工作就好了。

using UnityEngine;
using UnityEngine.UI;

public class Score : MonoBehaviour
{
    private float timer;
    public Text scoreText;

    // Update is called once per frame
    void Update()
    {
        timer += Time.deltaTime;
        scoreText.text = timer.ToString("0.#");
    }
}

该脚本旨在从第一个脚本中提取得分并将其显示在游戏面板上方的文本对象上。

using UnityEngine;
using UnityEngine.UI;

public class DisplayScore : MonoBehaviour
{
    public Text finalScore;

    void OnEnable()
    {
        finalScore.text = GetComponent<Score>().scoreText.text.ToString();
    }
}

除了此空引用错误外,游戏运行正常。 错误来自第二个脚本中的这一行:

finalScore.text = GetComponent<Score>().scoreText.text.ToString();

1 个答案:

答案 0 :(得分:1)

由于在Unity中Text构造函数受到保护,因此您必须访问在编辑器中创建的现有Text对象。像这样

finalScore = someGameObject.GetComponent<Text>();
finalScore.text = timer.ToString("0.#");

或使用Text创建一个.AddComponent<Text>对象,如下所示:Text.text