参考 canvas 预制文本框
Reference canvas prefab textfields
我有一个名为 ScoreMenu 的 canvas 预制件,我以编程方式实例化它。
GameObject scoreMenu = (GameObject)Instantiate(Resources.Load("Prefabs/Menus/ScoreMenu"));
在我的 canvas 中,我有几个文本字段和按钮。我在引用这些文本字段时遇到问题,因此我无法更改其中的内容。
我的 canvas 有一个带有 public score
类型 Text
变量的脚本。如果它是 ScoreMenu
类型,我可以引用它。但是实例化的对象是GameObject
类型的。所以我无法成功地将它转换为另一种类型,所以我可以做 scoreMenu.score.text = "203";
我不断收到 nullreference 错误或转换错误。引用 canvas 预制件的子对象的正确方法是什么?
更新二:
我已经缩小了问题范围。
GameObject scores = Instantiate(Resources.Load("Prefabs/Menus/ScoreMenu")) as GameObject;
ScoreMenu scoresMenu = scores.GetComponent<ScoreMenu>();
这似乎是实例化和引用预制件的正确方法。
然而,问题在于我的预制件 class 中的变量。
在我的 class 中,我可以引用和更改 Text
对象。但是当我尝试在 class 之外执行此操作时,我收到空引用错误。
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
}
找到了,我想。
我不得不将 texfield 对象从层次结构拖到检查器中的 public 变量字段。
我有一个名为 ScoreMenu 的 canvas 预制件,我以编程方式实例化它。
GameObject scoreMenu = (GameObject)Instantiate(Resources.Load("Prefabs/Menus/ScoreMenu"));
在我的 canvas 中,我有几个文本字段和按钮。我在引用这些文本字段时遇到问题,因此我无法更改其中的内容。
我的 canvas 有一个带有 public score
类型 Text
变量的脚本。如果它是 ScoreMenu
类型,我可以引用它。但是实例化的对象是GameObject
类型的。所以我无法成功地将它转换为另一种类型,所以我可以做 scoreMenu.score.text = "203";
我不断收到 nullreference 错误或转换错误。引用 canvas 预制件的子对象的正确方法是什么?
更新二:
我已经缩小了问题范围。
GameObject scores = Instantiate(Resources.Load("Prefabs/Menus/ScoreMenu")) as GameObject;
ScoreMenu scoresMenu = scores.GetComponent<ScoreMenu>();
这似乎是实例化和引用预制件的正确方法。
然而,问题在于我的预制件 class 中的变量。
在我的 class 中,我可以引用和更改 Text
对象。但是当我尝试在 class 之外执行此操作时,我收到空引用错误。
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
}
找到了,我想。 我不得不将 texfield 对象从层次结构拖到检查器中的 public 变量字段。