C# 没有出现Gui文本问题

C# 没有出现Gui文本问题,c#,unity3d,C#,Unity3d,我目前在unity 5中遇到Gui文本问题。我想得到的是屏幕上显示的分数。评分系统可以工作,因为我有一个Debug.Log输出,它告诉我它可以工作,但是Gui文本不会显示出来,但是如果我只是在文本框中键入它的话 using UnityEngine; using System.Collections; public class Score : MonoBehaviour { public static int myScore; public bool allowScore =

我目前在unity 5中遇到Gui文本问题。我想得到的是屏幕上显示的分数。评分系统可以工作,因为我有一个Debug.Log输出,它告诉我它可以工作,但是Gui文本不会显示出来,但是如果我只是在文本框中键入它的话

using UnityEngine;
using System.Collections;

public class Score : MonoBehaviour {

    public static int myScore;
    public bool allowScore = false;
    public GUIText myText;

    //only allows score to start when first object has passed player object
    void OnTriggerEnter2D(Collider2D collisionObject) {
    allowScore = true;
    }

    //add 1 to score every switch
    void Update () {

        if (Input.GetMouseButtonDown (0) && allowScore == true) {
            myScore = myScore + 1;
            Debug.Log ("My score is " + myScore + " point(s)");
        }

        //GUI text for screen
        myText.text = "Score: " + myScore.ToString();
    }
}

除非这是打字错误,否则您的代码行有两个等号:

myText.text = "Score: " = myScore.ToString();
我猜你想做的是让它说出分数:然后显示分数。要做到这一点,只需将第二个值改为加号

myText.text = "Score: " + myScore.ToString();
还有一个有用的提示,在代码行上写着
myScore=myScore+1,您只需执行
myScore++
,如果您希望在某个点添加多个,可以说
myScore+=amountToAdd
+=
意味着你希望它等于自身加上等式的另一边,
+
只意味着加1。

编辑:回复评论
当您尝试为系统中未分配的变量分配值时,会发生NullReferenceException。如上所述,在代码中声明变量
public GUIText myText
,然后尝试更改这个对象文本,但是,在代码中没有任何地方说明
myText
等于什么。因此,当您调用
myText.text
时,它试图设置不存在(null)变量的文本。要解决这个问题,在Unity中,一旦退出代码,在inspector中,您将能够看到附加到对象的代码。在该脚本组件中,您将看到变量
myText
,将带有吉他文本组件的游戏对象从您的层次结构拖到该插槽中。


啊,是的,这是一个打字错误,我以为我已经更新了代码,但显然没有。代码运行,但没有显示任何内容。在控制台中,它表示未指定的引用异常,未分配score的变量mytext。我真的不知道这是什么意思。有什么想法吗?太好了。我将使用脚本的游戏对象添加到inspector中的文本中,现在效果非常好。我没有意识到我需要手动将它应用到其他对象上的相同脚本,但这没有问题。谢谢。每一个小的帮助都很好: