使用关键字 Unity 查找游戏对象

Find GameObjects with keyword Unity

如何在 Unity 中找到带有关键字的游戏对象?

其实我有很多这样命名的游戏对象:

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

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

现在,我想要一个带有这个原型的函数:

public static GameObject[] getObjectsWithIdentifier(int identifier)

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

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

感谢您的帮助!

我想你指的是像 GameObject 标签之类的东西?

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

这仍然使用直接字符串,但它不是 GameObject 的名称,因此它更易于管理。您可以将标签分配给游戏对象,最常见的是通过预制件。

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

这表明要将 Unity3d 标签转换为 int/enum 类型,您必须自己进行管理。但是使用字典之类的东西应该相当简单。

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

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

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