如何检查GameObject是否包含任何类型的任何组件?

Ben*_*umi 0 c# unity-game-engine

selected.GetComponent()
Run Code Online (Sandbox Code Playgroud)

selected是一个GameObject,我想找到它是否有任何组件,而不仅仅是特定的组件或类型.

Fat*_*tie 6

幸运的是,这很简单

Component[] allOfThem = GetComponents<Component>();
Run Code Online (Sandbox Code Playgroud)

这是"这个"游戏对象,当然也selected.GetComponents<Component>()适用于你的游戏对象selected.

所以,当你想到它..

Component[] stuff = GetComponents<Weapons>();
Run Code Online (Sandbox Code Playgroud)

..它将为您提供武器的子类.

Component[] ux = GetComponents<UnityEditor.UI.Button>();
Run Code Online (Sandbox Code Playgroud)

..它将为您提供Button的子类.

Component[] stuff = GetComponents<Enemies>();
Run Code Online (Sandbox Code Playgroud)

..那将为你提供一切敌人的子类.

所以这......

Component[] stuff = GetComponents<Component>();
Run Code Online (Sandbox Code Playgroud)

将为您提供所有组件!

你不能将它"附加"到游戏对象上,除非它Component是你想要的.