Страница 1 из 1

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

СообщениеДобавлено: 12 ноя 2017, 21:55
Valentinus
Вот какая штука выявилась:

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

это не вопрос, просто делюсь опытом :) всем бобра.

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

СообщениеДобавлено: 13 ноя 2017, 00:07
Cr0c
1. Логично, это же просто вызов метода, не апдейт никакой
2. Так и через Find неактивные го не находит, и SendMessage не должен отключенным объектам прилетать

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

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

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

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

СообщениеДобавлено: 13 ноя 2017, 07:13
Norman
Valentinus писал(а):1. но говорят что корутины не выполняются (но это не точно, я не проверял)

Именно так. Корутины прекращают выполняться стоит отключить ГО, потом надо заново запускать. А инвок продолжает тарахтеть независимо от вкл/выкл ГО.

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

СообщениеДобавлено: 13 ноя 2017, 09:14
Cr0c
Valentinus писал(а):2. но SendMessage я вызываю у самого ГО, т.е. поиск его тут не нужен

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

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

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

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

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

СообщениеДобавлено: 13 ноя 2017, 10:58
Cr0c
Valentinus писал(а):с подписками это было бы на порядок сложнее реализовывать.

С интерфейсами быстрее и незначительно сложнее.

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

СообщениеДобавлено: 13 ноя 2017, 11:51
snezhok_13
Тоесть InvokeRepeating крутится где-то в недрях Unity? Тоесть там какой-то цикл и таймер должен быть..

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

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