使用关键字 Unity 查找游戏对象
Find GameObjects with keyword Unity
如何在 Unity 中找到带有关键字的游戏对象?
其实我有很多这样命名的游戏对象:
- 混凝土地板 [289483]
- 混凝土地板 [289487]
- 墙体部分 [293291]
- 部分 [321043]
- ...
我已经创建了获取对象 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();
}
如何在 Unity 中找到带有关键字的游戏对象?
其实我有很多这样命名的游戏对象:
- 混凝土地板 [289483]
- 混凝土地板 [289487]
- 墙体部分 [293291]
- 部分 [321043]
- ...
我已经创建了获取对象 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();
}