使用关键字Unity查找GameObjects

时间:2015-04-23 16:03:57

标签: c# unity3d gameobject

如何在Unity中找到带有关键字的GameObjects?

实际上,我有很多以这样命名的GameObject:

  • 混凝土楼层[289483]
  • 混凝土楼层[289487]
  • 墙壁部分[293291]
  • Part [321043]
  • ...

我已经创建函数来获取对象的ID(在[]括号内),因为它是GameObject名称的相关部分。

ID应该是唯一的,但我不确定是不是!

现在,我希望有一个这个原型的功能:

public static GameObject[] getObjectsWithIdentifier(int identifier)

它将返回具有参数中给出的标识符的所有对象。所以它就像一个搜索功能。

GameObject.Find(name),据我所知,只搜索对象的确切名称。

感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

我认为您指的是像GameObject的标签?

http://docs.unity3d.com/ScriptReference/GameObject.FindGameObjectsWithTag.html

这仍然使用直接字符串,但它不是GameObject的名称,所以它稍微有点管理。您可以为GameObjects分配标签,最常见的是通过Prefab。

http://answers.unity3d.com/questions/54040/can-i-get-a-tags-element-number.html

这表明要将Unity3d标记转换为int / enum类型,那么您必须自己管理它。但是使用Dictionary或其他东西应该相当简单。

答案 1 :(得分:0)

最后,这是我提出的解决方案。

这就是我所做的,当然它是迭代的,但我想我会在你第一次使用这个函数时创建一次初始全局数组。

public static Object[] findObjectsFromIdentifier(int identifier) {
    Object[] objects = GameObject.FindObjectsOfType( typeof( GameObject ) );
    return objects.Where( obj => getIdentifierFromObject( obj ) == identifier ).ToArray();
}