我无法显示文本,执行该方法时会出现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,但我无法在显示屏上看到它。
答案 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()会做什么?