Не хватает Update и LateUpdate

Программирование на Юнити.

Не хватает Update и LateUpdate

Сообщение megafanat 05 окт 2010, 05:30

В игре на каждом кадре производятся такие действия:
  1. Объекты типа А обновляют свое состояние и воздействуют на объекты типа B
  2. Объект типа B обновляют свое состояние с учетом воздействия от объектов типа A и воздействуют на объекты типа C.
  3. Объекты типа C обновляют свое состояние с учетом воздействий от объектов типа B.

Если обновление объектов А и их воздействие на B вставить в Update, тогда придется обновление объектов B вставлять в LateUpdate.
А куда вставлять обновление объектов C? Если их вставить в LateUpdate, тогда они будут обновляться с задержкой в один кадр, что приведет к скачкам, мерцаниям и лагам.

Можно ли как-то простым способом увеличить количество отсортированных по очередности вызова групп функций выполняемых на каждом кадре?
megafanat
UNец
 
Сообщения: 23
Зарегистрирован: 26 май 2010, 12:26

Re: Не хватает Update и LateUpdate

Сообщение Paul Siberdt 05 окт 2010, 08:41

Берите бумажку и расписывайте алгоритм общения A, B и C... приглядитесь и найдете кучу лазеек.

Никто не мешает завести флажок "Обновить состояние" и делать все дела уже на следующем кадре.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Не хватает Update и LateUpdate

Сообщение Zaicheg 05 окт 2010, 08:56

Попробуйте вызвать из апдейта первого объекта метод второго объекта, а из него — метод третьего объекта.

Прикрепляю проект с демонстрацией.
Как проиграть только один первый кадр приложения: нажимаете Pause → нажимаете Start (при нажатой Pause). Цикл добавлен для проверки того, что от кол-ва вычислений в методе суть не меняется.
У вас нет доступа для просмотра вложений в этом сообщении.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Не хватает Update и LateUpdate

Сообщение DbIMok 05 окт 2010, 09:01

ну и порядок выполнения ф-ий, чтобы было )
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Не хватает Update и LateUpdate

Сообщение Tolking 05 окт 2010, 09:04

Обычно ненужно обновлять состояния всех объектов. У тебя есть персонаж(А), плиты на полу(В), двери(С) которые открываются плитами... В идеале ненужно обновлять персонаж, если нет управляющих сигналов, ненужно обновлять плиты, если персонаж не движится, двери ненужно обновлять еслди ненажата плита... По-этому логика такая- наступил перс на плиту, плита обновилась, открыла 2 двери, двери обновились... А не такая: Перс - ходит, плиты - "а не наступил ли на меня перс?", двери - " а не нажалась ли моя плита?".

Update - разврат. Пихнуть в него логику - огромный соблазн, ибо это просто... Но на темную сторону силы это путь. :) (ИМХО)

Если формально отвечать, то тебе нужно логику пихнуть в Public MyUpdate. Создать объект UpdateMenager (у камеры например) в нем твои объекты собрать в 3 списка А,В,С и в Update менагера уже вызывать MyUpdate в нужном порядке.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Не хватает Update и LateUpdate

Сообщение Paul Siberdt 05 окт 2010, 10:12

А я люблю бродкасты (popcorn)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Не хватает Update и LateUpdate

Сообщение Neodrop 05 окт 2010, 12:51

Из раздела Компоненты, скачайте Antares.dll
В ней есть Менеджер Событий (Antares.Manager) позволяющий упорядочить управление всеми вашими обновлениями и группами объектов. Описание в справке по Антаресу. Правда кратенькое.

Про бродкасты - Antares.Manager во много раз быстрее ;)
Как минимум в 5 раз быстрее чем Message и раз в 10 быстрее бродкастов.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Не хватает Update и LateUpdate

Сообщение DbIMok 05 окт 2010, 16:38

и стоит недорого :)
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Не хватает Update и LateUpdate

Сообщение Neodrop 05 окт 2010, 19:06

DbIMok писал(а):и стоит недорого :)

Для некоммерческих проектов - бесплатно, если не заметил в справке.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Не хватает Update и LateUpdate

Сообщение Paul Siberdt 05 окт 2010, 20:52

Блин... я совсем упустил Message... правда, чтоль, мессага быстрее бродкаста по самому себе?
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Не хватает Update и LateUpdate

Сообщение Neodrop 05 окт 2010, 20:57

Конечно. Бродкаст же шлёт ту самую мессагу по всем чилдам объекта. Само-собой он медленнее.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Не хватает Update и LateUpdate

Сообщение Paul Siberdt 06 окт 2010, 08:06

А если у объекта нет чилдов, Мессага и Бродкаст уравниваются в скорости или излишества нехорошие где накапливаются?
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Не хватает Update и LateUpdate

Сообщение Neodrop 06 окт 2010, 10:50

Ну, если нету, то разница в скорости минимальна - у бродкаста остаётся только одна "избыточная операция" : получение списка чилдов.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Не хватает Update и LateUpdate

Сообщение Paul Siberdt 06 окт 2010, 10:54

Ну, вощем, "Шикааарна!", как сказал бы Картман... заменил у себя 80% бродкастов на мессаги и теперь сижу довольный :)
Как легко, оказывается, замыленным взглядом пропускать очевидные вещи. :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Не хватает Update и LateUpdate

Сообщение Neodrop 06 окт 2010, 10:57

А эффект то вышел? Или только моральное удовлетворение? ;;)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9