C# Unity/C查找具有泛型组件的对象
我对inspector中的拖放组件感到筋疲力尽 我想做的是找到每一个有我用T选择的组件的对象C# Unity/C查找具有泛型组件的对象,c#,unity3d,unityscript,C#,Unity3d,Unityscript,我对inspector中的拖放组件感到筋疲力尽 我想做的是找到每一个有我用T选择的组件的对象 void GetAllGameObjectWhichHave<T>(ref int cnt, GameObject[] f_array, GameObject transformForSearch) { foreach (Transform trans in transformForSearch.transform) { GetAllGameObjectWh
void GetAllGameObjectWhichHave<T>(ref int cnt, GameObject[] f_array, GameObject transformForSearch)
{
foreach (Transform trans in transformForSearch.transform)
{
GetAllGameObjectWhichHave<T>(ref cnt, f_array, trans.gameObject);
T temp = trans.gameObject.GetComponent<T>();
if (temp != null && cnt < f_array.Length)
{
f_array[cnt++] = trans.gameObject;
}
}
}
我以前也是这样
//OnAwake()
GetAllGameObjectWhichHave<Rigidbody2D>(ref zeroInt, enoughArray, TopHierarchyObj);
这个递归函数获取每个游戏对象,并将它们保存在f_数组中。它无法筛选并且“temp”始终不为null
T temp=trans.gameObject.GetComponent似乎不像我所说的那样工作
我误解了什么吗?就用吧。是的,通用变量存在,它将为您提供一个特定类型的所有组件的数组。从那里你可以做任何你喜欢的事
或者,如果您想将其限制为某个游戏对象的子对象中的组件,您可以使用。这将获得对象子对象中特定类型的所有组件的数组 但这会找到场景中的每个对象…..我想限制只在特定对象的层次结构中进行搜索。调整@taehankwan。