使用关键字Unity查找GameObjects
如何在Unity中找到带有关键字的GameObjects?
实际上,我有很多GameObject这样命名:
- 混凝土楼[289483]
- 混凝土楼[289487]
- 墙壁部分[293291]
- 部分[321043]
- …
我已经创建函数来获取对象的ID(在[]括号内),因为它是GameObject名称的相关部分。
ID应该是唯一的,但我不确定它是什么!
现在,我希望有一个这个原型的function:
public static GameObject[] getObjectsWithIdentifier(int identifier)
它将返回具有参数中给出的标识符的所有对象。 所以它就像一个搜索function。
GameObject.Find(name)
,据我所知,只搜索对象的确切名称。
谢谢你的帮助 !
我认为你指的是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或其他东西应该相当简单。
最后,这是我提出的解决方案。
这就是我所做的,当然它是迭代的,但我想我会在你第一次使用这个函数时创建一次初始全局数组。
public static Object[] findObjectsFromIdentifier(int identifier) { Object[] objects = GameObject.FindObjectsOfType( typeof( GameObject ) ); return objects.Where( obj => getIdentifierFromObject( obj ) == identifier ).ToArray(); }