我已按照本教程(https://unity3d.com/pt/learn/tutorials/projects/roll-ball-tutorial/displaying-score-and-text)进行操作,每次我的脚本分数发生变化时都会更新文本,并且它工作得很好。
但我想使用 TextMeshPro 而不是简单的文本。我已经在代码中进行了所有必要的更改,例如:
使用TMPro
公共 TextMeshProUGUI 分数文本;(而不是公共文本 ScoreText)
ScoreText = gameObject.GetComponent(); (在 void Start() 内)
ScoreText.text = "分数:" + Score.ToString(); (在我的函数内)
在播放模式下,我收到“NullReferenceException:未将对象引用设置到对象实例”消息。我发现了原因。当我进入播放模式时,我在检查器中看到分配给脚本的 TextMeshProUGUI 自动取消分配。
我制作了一个独立的脚本,并将其添加到 TextMeshProUGUI 中,以检查我的代码是否可以与 TextMeshPro 一起使用,确实如此。问题是:我不想用一个单独的脚本来更新 TextMeshPro。正如上面的教程所示,我需要将 TextMeshPro 作为具有所有其他功能的大脚本内的公共变量。
如果在进入播放模式后,我通过将 TextMeshProUGUI 拖动到检查器来手动分配 TextMeshProUGUI,则乐谱有效!为什么当我进入游戏模式时,文本、预制件和所有内容都保留分配给我的游戏对象,但 TextMeshProUGUI 却没有?
我认为代码没问题,因为如果我手动分配 TextMeshProUGUI,它就可以工作。但是,无论如何...
public class SnakeController : MonoBehaviour
{
public TextMeshProUGUI scoreText;
private int score;
void Start()
{
....
scoreText = gameObject.GetComponent<TextMeshProUGUI>();
score = 0;
setScoreText();
}
public void setScoreText()
{
scoreText.text = "Score: " + score.ToString();
}
}
最大的问题是当我进入播放模式时 TextMeshProUGUI 被取消分配。
婷婷同学_
相关分类