如何获取TextMeshPro组件

时间:2018-03-08 11:45:45

标签: c# unity3d

public class ClickBub : MonoBehaviour {
int x;
int count;
TextMeshPro mytext;
TextMeshPro soretext;
GameObject textobj;
// Use this for initialization
void Start () {
    textobj = this.gameObject.transform.GetChild (0).gameObject;
    mytext = textobj.GetComponent<TextMeshPro>();

在这个mytext中是一个空值。如何将TextMeshValue分配给变量?

还说团结引擎无法转换类型。

1 个答案:

答案 0 :(得分:3)

当你这样做时

textobj.GetComponent<TextMeshPro>();

Unity将在对象TextMeshPro中查找textobj组件。 根据您的代码,textobj是具有ClickBub脚本的对象的第一个子节点。您应首先检查第一个孩子是否在编辑器中有TextMeshPro组件。为了确保您访问所需的元素,您可以尝试打印其名称:

void Start () 
{
    textobj = this.gameObject.transform.GetChild (0).gameObject;
    Debug.Log(textobj.name);
}

这是你期望的对象吗?

然后,如果一切设置正确但你想添加 TextMeshPro组件,如果它没有,你可以做

void Start () 
{
    textobj = this.gameObject.transform.GetChild (0).gameObject;
    mytext = textobj.GetComponent<TextMeshPro>();
    if(mytext == null)
    {
        mytext = textobj.AddComponent<TextMeshPro>();
    }
}