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

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

我正在尝试在 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)
 

我做错了什么?

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

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

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

我不明白为什么那不起作用,但现在解决了:

public Text GuessUI;
public Text TextUI;

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

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