按值统一搜索文本

时间:2018-11-14 00:05:29

标签: c# unity3d

我需要通过其值获取文本GameObject。 例如: 文本很多,我只需要说“你好”,而不是名字,值,就可以了。

//PseudoCode
string = "Hello";
GameObject.FindObjectsByValue("Hello")

1 个答案:

答案 0 :(得分:1)

没有内置功能,因此您需要手动执行。这取决于您的情况。通常,您必须:

  1. 引用所有可能具有该文本值的游戏对象
  2. 通过循环检查每个GameObject的文本值

如果您需要 一次或两次 查找该单词,则可以执行以下操作:

Text[] array = GameObject.FindObjectsOfType<Text>();

foreach (var x in array)
{
    if (string.Compare(x.text,"Hello") == 0)
    {
        // The stuff to do here
    }
}

如果您需要多次寻找该 单词 ,则需要在某些变量中存储对这些GameObject的引用,并在需要时随时访问。这是因为FindObjectsOfType<>();是相当昂贵的操作,因此我们需要尽可能少地进行操作。这样的事情应该起作用:

private Text[] array;

private void Awake()
{
    Text[] array = GameObject.FindObjectsOfType<Text>();
}
private void Update()
{
    foreach (var x in array)
    {
        if (string.Compare(x.text, "Hello") == 0)
        {
            // The stuff to do here
        }
    }
}