2016-02-15 1 views
0

В Unity 3d я создал экземпляр класса, который я написал под названием Timer.Update() не вызывается для динамически созданного экземпляра класса

Timer readyTimer = new Timer("Ready Timer"); 

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

Есть ли способ динамически создать экземпляр класса, такого как этот, и все же позволить функциям MonoBehavior работать так, как они предназначены?

+0

Класс *** должен быть MonoBehavior *** ... это так просто. – Fattie

+0

Возможно, это ваша фундаментальная проблема: смутно, в Unity, они забыли добавить концепцию ** preload scene **. В 100% проектов Unity первое, что вы делаете, это добавить «Scene Zero», который загружается первым. Он содержит такие вещи, как AI, звуковые эффекты, выигрыш, управление играми - все «одноэлементные вещи», которые вы всегда играете в игре. (Очевидно, вы не можете использовать одиночные игры в игровом движке.) Конечно, все они отмечены 'DontDestroyOnLoad'. Необычное единство забыло включить эту концепцию (это Единство во всем), которая является самой простой, когда вы делаете игры. – Fattie

+0

То, что вы тогда, вероятно, сделаете, просто добавляет тривиальный кусок синтаксического сахара, чтобы очень легко получить доступ к этим компонентам «из любого места». http://answers.unity3d.com/answers/1124859/view.html – Fattie

ответ

1

Обновление вызывается на игровые объекты. У вас есть сборник с вашим разработанным компонентом Timer, а затем укажите, что вы вставляете в свою сцену: http://docs.unity3d.com/ScriptReference/Object.Instantiate.html

+0

Я не думал об этом. В моем случае создание экземпляра gameobject и добавление скрипта в качестве компонента все динамически, вероятно, было бы лучшим способом справиться с этим. Спасибо. – saboehnke

+0

Обновление вызвано компонентами MonoBehaviour, которые реализуют обновление. GameObject - это просто контейнер для компонентов. Просто неправильная формулировка, но идея правильная. – Everts

+0

И компоненты добавляются с помощью AddComponent в игровой объект. – Everts

Смежные вопросы