2015-11-14 6 views
0

Мой код выглядеть так:Unity3D инстанцировании в GameObject

if (Input.GetButtonDown ("Fire2")) { 
     GameObject transparent = Instantiate (building, new Vector3 (0, -10,0), Quaternion.identity) as GameObject; 
} 

Где здание общественного GameObject, который я добавляю через единство Inpsector. После использования щелчка правой кнопкой мыши GameObject создается, но прозрачная переменная имеет значение null вместо созданного объекта GameObject. Если я изменяю тип прозрачного объекта и я удаляю «как GameObject» , все работает хорошо.

Хорошо, я выяснил, что не так. Мое здание не было GameObject, это было Building (класс, который наследует MonoBehaviour, так что сам gameobject). Теперь я создаю build.gameobject и все в порядке.

+0

строит в ваших префабы папку? Вы добавили здание в свой скрипт? –

+0

Я сказал, что здание появляется в игровом представлении, но прозрачный получает значение null вместо значения ссылки на порожденный игровой объект. Здание находится в папке prefab и добавляется в скрипт в инспекторе. – Konowy

+0

Проблема заключается в том, что Instantiate не хочет возвращать другой тип, кроме Object, даже с литьем в GameObject или Transform. – Konowy

ответ

1

Оказалось, что я инициировал «строительство» как класс здания (Building - это мой собственный класс и наследует MonoBehaviour), а не как объект GameObject, поэтому единство было проблемой для того, чтобы поместить Building в GameObject. Это выглядит так:

if (Input.GetButtonDown ("Fire2")) { 
    GameObject transparent = Instantiate (building.gameobject, new Vector3 (0, -10,0), Quaternion.identity) as GameObject; 

}