为什么.ToString()方法会破坏我的代码?

时间:2020-01-25 19:44:00

标签: c# visual-studio unity3d

我是一个相对较新的C#编码器。我以前从未遇到过这个问题,但是由于某种原因,当我尝试通过代码更新分数时。它破坏了我的游戏。这是我的代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ScoreManager : MonoBehaviour
{
public static ScoreManager instance;

[SerializeField] Text score;

int points;

void Start()
{
    if(instance == null)
    {
        instance = this;
    }
    score = GetComponent<Text>();
    points = 0;
}

// Update is called once per frame
void Update()
{
    score.text = points.ToString();
}

public void AddToScore()
{
    points++;
}
}

如果我注释掉了score.text = points.ToString();它将正常工作。但不会更新。

有人可以帮助我吗:(。我正在使用unity,并且我已将文本文件附加到scoremanager对象。我得到的错误是:

NullReferenceException:对象引用未设置为对象的实例 ScoreManager.Update()(位于Assets / Scripts / ScoreManager.cs:27)

1 个答案:

答案 0 :(得分:2)

呼叫时,您的score字段为null

score.text = points.ToString();

使用调试器检查其初始化行。

这里

score = GetComponent<Text>();

您的score变量被初始化为空值。

当您尝试使用属性score时,您会得到NullPointerException

在使用score的属性之前,请确保已正确初始化。