如何检查GameObject是否具有任何类型的所有组件?

时间:2018-10-21 21:02:22

标签: c# unity3d

selected.GetComponent()

选择的是一个GameObject,我想查找它是否具有任何组件,而不仅仅是特定的组件或类型。

3 个答案:

答案 0 :(得分:6)

幸运的是,这很简单

Component[] allOfThem = GetComponents<Component>();

是用于“此”游戏对象,或者当然是selected.GetComponents<Component>()用于游戏对象selected

所以,当你考虑它时..

Component[] stuff = GetComponents<Weapons>();

..这将为您提供属于武器的子类的所有内容。

Component[] ux = GetComponents<UnityEditor.UI.Button>();

..它将为您提供Button子类的所有内容。

Component[] stuff = GetComponents<Enemies>();

..这将为您提供敌人的子类。

所以这...

Component[] stuff = GetComponents<Component>();

将为您提供组件的一切!

除非它是Component,否则您不能将它“附加”到游戏对象上。

答案 1 :(得分:1)

您尝试了以下方法吗?据我所知,所有组件都扩展了基础Component类。

Component[] components = selected.GetComponents(typeof(Component));

答案 2 :(得分:0)

//ищукомпонентComp1наобъектееслиегонеттодобавляемнаобъект //подстраивайтеподвашинужды

public GameObject[] obj;

int[] numeric = new int[] {1,2,3,4 };
if (obj[0].GetComponent("Comp" + numeric[0]) == false) { obj[0].AddComponent(Type.GetType("Comp" + numeric[0])); }