如何在单位2D上显示文字以显示

时间:2017-03-07 22:09:15

标签: unity3d text 2d unity5

我无法显示文本,执行该方法时会出现NullReferenceException。最重要的是,代码不会停止运行。

// Use this for initialization
void Start()
{
    // Default position not valid? Then it's game over
    if (!isValidGridPos())
    {
        Text text;
        text = GetComponent<Text>();

        text.text = "Game Over";
        Destroy(gameObject);
        if (Input.GetKeyDown(KeyCode.R))
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
        }

    }
}

代码来自this tutorial。我只想添加一个重启和Game Over消息。

编辑:尝试使用text = GetComponent()显示文本不起作用。什么是显示实际有效的统一文本的另一种方式?我也尝试过GUIText,但我无法在显示屏上看到它。

3 个答案:

答案 0 :(得分:0)

我查看了教程,他们有以下代码:

editor.action.clipboardCopyWithSyntaxHighlightingAction

这样可行,因为它会打印到调试日志控制台。您显然想要捕获它并将其打印在屏幕上。这需要将画布和文本组件添加到脚本所在的游戏对象中。在这里声明一个文本变量不会在游戏对象中添加一个,它必须在统一检查器中完成。

以下代码:

ctrl+shift+p

不应该在这里,因为这个对象已经被破坏了,除非你把钥匙放在与创建对象相同的框架中,否则这个代码将变得无用。它应该在游戏对象上的另一个脚本中不会被破坏,它将等待一个r键重新加载该级别。

答案 1 :(得分:0)

如果text = GetComponent<Text>();不起作用,可能是因为您的Text组件不在脚本附加到的同一个游戏对象上。

在Unity编辑器中,检查文本组件和脚本是否在同一个游戏对象上

答案 2 :(得分:-2)

您是否在跑步时检查编辑器视图? 不要在Strar()中使用destroy。 您可以像Destroy(gameobject,5.0f)一样设置延迟,并在其他一些回调函数中使用它(例如Action)。

现在,您只需在初始化后立即销毁整个游戏对象的所有脚本和组件(包括文本)。如果它从头开始就在场景中,那么只要按下播放它就会被破坏。

Start()只运行一次,那么isValidGridPos()会做什么?