Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity/C查找具有泛型组件的对象_C#_Unity3d_Unityscript - Fatal编程技术网

C# Unity/C查找具有泛型组件的对象

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

我对inspector中的拖放组件感到筋疲力尽

我想做的是找到每一个有我用T选择的组件的对象

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。