C# 如何检查OnTiggerEnter中对象上的文本

C# 如何检查OnTiggerEnter中对象上的文本,c#,unity3d,collider,C#,Unity3d,Collider,我有一个问题,我创建了一个游戏,我需要收集一个气球,并检查我附加在上面的文本编号: 这很简单。例如,在other对象的子对象中有一个TextMeshPro。在这种情况下,有两种方法可以获取子对象 我将在答案的底部添加参考链接 other.transform.Find() other.transform.GetChild() 1.other.transform.Find() 使用transform.find()方法,它将遍历父对象的子对象的所有游戏对象。在您的情况下,此方法将遍历其他对象的所有子

我有一个问题,我创建了一个游戏,我需要收集一个气球,并检查我附加在上面的文本编号:


这很简单。例如,在
other
对象的子对象中有一个
TextMeshPro
。在这种情况下,有两种方法可以获取子对象

我将在答案的底部添加参考链接

  • other.transform.Find()
  • other.transform.GetChild() 1.other.transform.Find() 使用
    transform.find()
    方法,它将遍历父对象的子对象的所有游戏对象。在您的情况下,此方法将遍历
    其他
    对象的所有子对象,一旦找到与名称匹配的对象,它将返回该对象

    这里有一个例子:

    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Ballon")
        {
             TextMeshPro tmp = other.transform.Find("Text (TMP) (1)").GetComponent<TextMeshPro>();
             if(tmp.text == "text of your liking")
             {
                 Debug.Log("Do what you want");
             }
        }
     }
    
    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Ballon")
        {
             TextMeshPro tmp = other.transform.GetChild(0).GetComponent<TextMeshPro>();
             if(tmp.text == "text of your liking")
             {
                 Debug.Log("Do what you want");
             }
        }
     }
    
    公共无效对撞机(对撞机其他)
    {
    如果(other.gameObject.tag==“气球”)
    {
    TextMeshPro tmp=other.transform.Find(“Text(tmp)(1)”).GetComponent();
    如果(tmp.text==“您喜欢的文本”)
    {
    Log(“做你想做的事”);
    }
    }
    }
    
    2.other.transform.GetChild() 此方法将直接从您输入的索引返回子级。这种方法是一种有效的方法

    以下是示例:

    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Ballon")
        {
             TextMeshPro tmp = other.transform.Find("Text (TMP) (1)").GetComponent<TextMeshPro>();
             if(tmp.text == "text of your liking")
             {
                 Debug.Log("Do what you want");
             }
        }
     }
    
    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Ballon")
        {
             TextMeshPro tmp = other.transform.GetChild(0).GetComponent<TextMeshPro>();
             if(tmp.text == "text of your liking")
             {
                 Debug.Log("Do what you want");
             }
        }
     }
    
    公共无效对撞机(对撞机其他)
    {
    如果(other.gameObject.tag==“气球”)
    {
    TextMeshPro tmp=other.transform.GetChild(0.GetComponent();
    如果(tmp.text==“您喜欢的文本”)
    {
    Log(“做你想做的事”);
    }
    }
    }
    
    参考文献:

    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Ballon")
        {
             TextMeshPro tmp = other.transform.Find("Text (TMP) (1)").GetComponent<TextMeshPro>();
             if(tmp.text == "text of your liking")
             {
                 Debug.Log("Do what you want");
             }
        }
     }
    
    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Ballon")
        {
             TextMeshPro tmp = other.transform.GetChild(0).GetComponent<TextMeshPro>();
             if(tmp.text == "text of your liking")
             {
                 Debug.Log("Do what you want");
             }
        }
     }
    
    1.

    2.

    只需获取other.gameObject的文本组件,然后访问文本变量即可。然后将这个字符串转换成整数。你能告诉我怎么做吗?我现在正在工作,两小时后我会给你解释,好吗?当然没问题,谢谢不要谢,回答别人的问题你也可以简单地使用
    getComponentChildren()
    @derHugo是的,没错,但如果存在多个
    TextMeshPro
    ,可能会造成混乱。