如何在Unity中找到带有关键字的GameObjects?
实际上,我有很多以这样命名的GameObject:
我已经创建函数来获取对象的ID(在[]括号内),因为它是GameObject名称的相关部分。
ID应该是唯一的,但我不确定是不是!
现在,我希望有一个这个原型的功能:
public static GameObject[] getObjectsWithIdentifier(int identifier)
它将返回具有参数中给出的标识符的所有对象。所以它就像一个搜索功能。
GameObject.Find(name)
,据我所知,只搜索对象的确切名称。
感谢您的帮助!
答案 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();
}