Интересное и познавательное(не вопрос, просто делюсь опытом)

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

Интересное и познавательное(не вопрос, просто делюсь опытом)

Сообщение Valentinus 12 ноя 2017, 21:55

Вот какая штука выявилась:

1. если запустить вызов функции через InvokeRepeating , а потом деактивировать ГО, то функция продолжает вызываться у неактивного ГО. (в отличие от корутин, которые при отключении ГО останавливаются)
2. к неактивному ГО не доходит сообщение через SendMessage

это не вопрос, просто делюсь опытом :) всем бобра.
Последний раз редактировалось Valentinus 13 ноя 2017, 08:55, всего редактировалось 1 раз.
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Интересное и познавательное(не вопрос, просто делюсь опытом)

Сообщение Cr0c 13 ноя 2017, 00:07

1. Логично, это же просто вызов метода, не апдейт никакой
2. Так и через Find неактивные го не находит, и SendMessage не должен отключенным объектам прилетать
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Интересное и познавательное(не вопрос, просто делюсь опытом)

Сообщение Valentinus 13 ноя 2017, 07:07

Cr0c писал(а):1. Логично, это же просто вызов метода, не апдейт никакой
2. Так и через Find неактивные го не находит, и SendMessage не должен отключенным объектам прилетать

1. но говорят что корутины не выполняются (но это не точно, я не проверял)
2. но SendMessage я вызываю у самого ГО, т.е. поиск его тут не нужен
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Интересное и познавательное(не вопрос, просто делюсь опытом)

Сообщение Norman 13 ноя 2017, 07:13

Valentinus писал(а):1. но говорят что корутины не выполняются (но это не точно, я не проверял)

Именно так. Корутины прекращают выполняться стоит отключить ГО, потом надо заново запускать. А инвок продолжает тарахтеть независимо от вкл/выкл ГО.
Norman
UNIт
 
Сообщения: 111
Зарегистрирован: 31 мар 2017, 18:38

Re: Интересное и познавательное(не вопрос, просто делюсь опытом)

Сообщение Cr0c 13 ноя 2017, 09:14

Valentinus писал(а):2. но SendMessage я вызываю у самого ГО, т.е. поиск его тут не нужен

Это явления одного порядка, SendMessage вообще нагруженная штука, он по всем чайлдам бегает и пытается выполнить что-нибудь. Подписка (ивент) быстрее, хоть и объемнее выглядит.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Интересное и познавательное(не вопрос, просто делюсь опытом)

Сообщение Valentinus 13 ноя 2017, 10:44

Cr0c писал(а):
Это явления одного порядка, SendMessage вообще нагруженная штука, он по всем чайлдам бегает и пытается выполнить что-нибудь. Подписка (ивент) быстрее, хоть и объемнее выглядит.

SendMessage по чайлдам бегает, если только родитель сообщение не обработал, поэтому чаще всего до беготни не доходит.
SendMessage иногда дюже удобен. я вот например здоровье уменьшаю врагам при ударе. очень удобно - кто в кого бьет (попал), тот тому и посылает сообщение, что здоровье его пошатнулось.
с подписками это было бы на порядок сложнее реализовывать.
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Интересное и познавательное(не вопрос, просто делюсь опытом)

Сообщение Cr0c 13 ноя 2017, 10:58

Valentinus писал(а):с подписками это было бы на порядок сложнее реализовывать.

С интерфейсами быстрее и незначительно сложнее.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Интересное и познавательное(не вопрос, просто делюсь опытом)

Сообщение snezhok_13 13 ноя 2017, 11:51

Тоесть InvokeRepeating крутится где-то в недрях Unity? Тоесть там какой-то цикл и таймер должен быть..
Разработка игр, немножко игровая журналистика, сейчас делаем Календарь: даты выхода игр
Аватара пользователя
snezhok_13
UNIверсал
 
Сообщения: 450
Зарегистрирован: 09 сен 2013, 11:12
Skype: s.coremission
  • Сайт

Re: Интересное и познавательное(не вопрос, просто делюсь опытом)

Сообщение Anonymyx 13 ноя 2017, 17:03

SendMessage() может через рефлексию работает, а от него надо отказаться по мере возможности (на самом деле всегда).
Invokerepeating создает экземпляр некого объекта который вызывает указанный метод через ту же рефлексию. Но так как внутренности на Cpp то я черт знает на самом деле... Просто имхо.
Я тоже в подобных случаях за интерфейсы. А с ивентами много мутни с подпиской-отпиской (я ленивый)
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55


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

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

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