参考画布预制文本字段

时间:2015-01-18 14:05:42

标签: c# unity3d

我有一个名为ScoreMenu的画布预制件,我以编程方式实例化。

GameObject scoreMenu = (GameObject)Instantiate(Resources.Load("Prefabs/Menus/ScoreMenu"));

在我的画布中,我有几个文本字段和按钮。我在引用这些文本字段时遇到问题,因此我可以更改其内容。 我的画布上有一个脚本,其中包含score类型的公共Text变量。如果它是ScoreMenu类型,我可以引用它。但实例化对象的类型为GameObject。所以我远远无法成功将其转换为其他类型,因此我可以执行scoreMenu.score.text = "203";之类的操作 我一直得到null引用错误或转换错误。引用画布预制件的子对象的正确方法是什么?

更新II:

我已经缩小了问题范围。

    GameObject scores = Instantiate(Resources.Load("Prefabs/Menus/ScoreMenu")) as GameObject; 
    ScoreMenu scoresMenu = scores.GetComponent<ScoreMenu>();    

这似乎是实例化和引用预制件的正确方法。 但问题在于我的预制类中的变量。 在我的课程中,我可以引用和更改Text对象。但是当我尝试在课外进行此操作时,我得到一个空引用错误。

public class ScoreMenu : MonoBehaviour {

    public Text numStrokes;


    void OnAwake () {


    }

    void Start () {
        numStrokes = GameObject.Find("Strokes").GetComponent<Text>();
        numStrokes.text = "0000"; // this works
    }

    public void test () {

        print (numStrokes.text); // when calling this method from outside the class I get nullreference error

    }

1 个答案:

答案 0 :(得分:0)

发现它,我想。 我不得不将文本字段对象从层次结构拖到检查器中的公共变量字段。

enter image description here