如何检查在 OnTriggerEnter 中的对象上找到的文本

How to check the text found on an object in OnTriggerEnter

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

  public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Ballon")
        {
       //now I want to check the text//
        }
     }

这很容易做到。作为您的示例,您在 other object 的 child 中有一个 TextMeshPro。现在在这种情况下,您有两种方法可以获取 child object.

我会在答案底部添加参考链接。

  1. other.transform.Find();
  2. other.transform.GetChild();

1。 other.transform.Find()

使用 transform.find() 方法,它将遍历 Objects 的所有 Objects 游戏 parent object 在您的情况下,此方法将遍历 other object 的所有 children,一旦找到与名称匹配的 object,它将 return object ].

举个例子:

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");
         }
    }
 }

2。 other.transform.GetChild()

此方法将直接从您输入的索引中 return child。而且这个方法是退出一个有效的方法。

示例如下:

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.Transform.Find()
2.Transform.GetChild()