Unity 5.6 — C# — Добавление GameObject в другой GameObject с помощью AddComponent‹T›

Функция, над которой я сейчас работаю, создает экземпляр GameObject (используя префаб). Я сохраняю этот GameObject в локальной переменной

GameObject tmpObject;

Работает безупречно. Затем я пытаюсь назначить этот GameObject моему представлению GameObject моего контроллера Vive, которое выглядит так:

tmpObject = tmpController.gameObject.AddComponent<GameObject>() as GameObject;

Ошибка, которую я получаю, заключается в том, что UnityEngine.GameObject не может быть преобразован в UnityEngine.Component.

Мне не хватает простого/базового? Я попытался добавить SphereCollider в соответствии с официальным руководством Unity, и это сработало, так почему я не могу добавить GameObject? Есть ли обходной путь для добавления GameObjects в другой GameObject? Мы очень благодарим за любую помощь!


person Guntram    schedule 28.04.2017    source источник
comment
GameObject может иметь свойства/компоненты, однако GameObject не может содержать другие GameObject. Другое дело, если вы хотите назначить parent как GameObject другому.   -  person Hristo    schedule 28.04.2017
comment
Но допустим, у меня есть самолет. Затем я могу добавить куб на плоскость, перетащив его на плоскость в иерархии Unity. Тогда куб (GameObject) является потомком плоскости (GameObject). В противном случае я понимаю вашу точку зрения, но как я могу назначить tmpObject дочерним элементом tmpController?   -  person Guntram    schedule 28.04.2017
comment
Правильно, но это не компонент родителя.   -  person Hristo    schedule 28.04.2017


Ответы (1)


Вы не можете добавить GameObject в GameObject. Это даже не имеет смысла с самого начала. Вы можете присоединять только компоненты. Я думаю, что вы хотите сделать GameObject дочерним элементом другого GameObject... Для этого вы можете использовать функцию SetParent. Ниже приведены примеры того, как создать GameObject и что вы можете сделать:

Создайте новый GameOBject с именем «BallObject».

GameObject a = new GameObject("BallObject");

Создайте новый GameOBject с именем «BrickObject».

GameObject b = new GameObject("BrickObject");

Сделать объект "BrickObject" родительским для объекта "BallObject"

a.transform.SetParent(b.transform);

Сделайте так, чтобы объект «BallObject» был сам по себе. Объект "BrickObject" больше не является его родителем

a.transform.parent = null;

Добавьте скрипт/компонент к вашему объекту "BrickObject"

b.AddComponent<Rigidbody>();
person Programmer    schedule 28.04.2017
comment
Да вы сделали. Я считаю, что Op хочет создать новый GameObject и назначить его переменной tmpObject, но потерпел неудачу, когда он использовал AddComponent в GameObject... Новое ключевое слово - это решение. - person Programmer; 28.04.2017