Как я могу проверить, есть ли у GameObject какие-либо Компоненты любого типа? - PullRequest
0 голосов
/ 22 октября 2018
selected.GetComponent()

выбран GameObject, и я хочу выяснить, есть ли в нем какие-либо компоненты, а не только конкретный или по типу.

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Вы пробовали следующее?Как я знаю, все компоненты расширяют базовый класс Component.

Component[] components = selected.GetComponents(typeof(Component));
0 голосов
/ 23 октября 2018

// ищу компонент Comp1 на объекте, если его нет, добавляем на объект // 1001 *

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])); }
0 голосов
/ 22 октября 2018

К счастью, это так просто

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, так что это то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...