如何在 Unity 4.6 中通过 C# 脚本更改 2 个不同的 UI 文本

How change 2 different UI text via C# script in Unity 4.6

提问人:DiogoSaraiva 提问时间:5/5/2015 最后编辑:StevenDiogoSaraiva 更新时间:5/5/2015 访问量:951

问:

我正在尝试在 monodevelop 中使用 C# 更改 Unity 4.6.3 中的两个不同的文本字段。

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

public class NumberWizard : MonoBehaviour {
    int max;
    int min;
    int guess;
    public Text GuessUI;
    public Text TextUI;

                       [...truncated...]

        GuessUI.text = "500"; 
        TextUI.text = "Welcome to Number Wizard!";
    }

我收到此错误:

NullReferenceException: Object reference not set to an instance of an object
NumberWizard.Start () (at Assets/Scripts/NumberWizard.cs:16)
 

enter image description here

enter image description here

enter image description here

我做错了什么?

C# 文本 unity-game-engine 文本框

评论

0赞 Max Yankov 5/5/2015
如果您在某个方法中遇到异常,通常最好在问题中包含所述方法的主体。是否包含来自该方法的代码?Start

答:

1赞 Turker Tunali 5/5/2015 #1

目前尚不清楚您想要实现的目标,但是如果您想使用依赖于某些东西来更新文本,那么您应该使用IF语句。如果要更新 2 个文本,则 NumberWizard 脚本应采用 2 个文本参数。或者,您可以使用 GameObject.FindByName() 方法。 例:

TextUI = GameObject.FindByName("TextUI");
GuessUI = GameObject.FindByName("GuessUI");
TextUI.Text = "Test1";
GuessUI.Text = "Test2";

注意:您的代码和屏幕截图不匹配。如果您有 2 个文本组件,则 Unity 编辑器应该会显示它们。

评论

0赞 Turker Tunali 5/6/2015
对不起,我当前的计算机没有 Unity。如果有的话,你能告诉我错误代码吗?
0赞 DiogoSaraiva 5/5/2015 #2

我不知道为什么这不起作用,但现在已经解决了:

public Text GuessUI;
public Text TextUI;

TextUI.text = "Welcome to Number Wizard!";
GuessUI.text = "500"; 

我在检查器中设置了这个:

enter image description here