【问题标题】:how to get the TextMeshPro component如何获取 TextMeshPro 组件
【发布时间】:2018-03-08 21:08:21
【问题描述】:
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 分配给变量?

还说统一引擎无法转换类型。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    当你这样做时

    textobj.GetComponent<TextMeshPro>();
    

    Unity 将在对象textobj 中查找TextMeshPro 组件。 根据您的代码,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>();
        }
    }
    

    【讨论】:

    • 非常感谢您的回复,但不幸的是,void OnMouseDown(){ for(int i=0;i
    • 假设animals包含字符串,我想你不比较可以比较的东西。如果mytext 是TextMeshPro,则不确定是否可以将其与字符串进行比较。尝试Debug.Log(myText + ", " + animals[i]); 检查比较的值。那么这是一个不同的问题,所以如果您需要更多帮助,您可以接受这个答案并针对您的新问题创建一个新问题
    猜你喜欢
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多