Handle в разных блупринтах, то лучше создать сам таймер в game mode и с блупринтов различных получать game mode(get gamemode), а потом кастовать переменную таймера и вызывать clear and invalidate timer by Handle , это вообще не кривой подход?
Пробовал сделать в UI глобальную переменную таймера - такой фокус не проходит
Сделай диспатчер
Дело в том что таймеры реализовывают парадигму наблюдателя, а диспатчеры удобны для подписок, уже внутри функции таймера будут и события и возможно диспатчеры.
Вот что я имел ввиду, это допустимо? или считается кривая реализация наблюдателя?
хмммм но не проще в такому случае будет обращаться напрямую к GameMode и вызывать в нем событие?
Дело не в отправке события в геймод, а в геймоде наблюдатель сидит( например по примеру матч 3 - кто-то должен мониторить постоянно набор 3 в ряд а кто-то бонусы и другие вещи)
Я просто не могу догнать почему никто не сталкивался с проблемой реализации наблюдателя? без него же просто в некоторых ситуациях - не получится. Некая логика посыла -ответа не требует его, но контроль правил игры по любому.
так минутку у тебя этот наблюдатель создан и функционирует в GameMode? а как у других систем происходит подпись на него? и для чего он вообще нужен? Я так понимаю он должен вызываться на тике таймера так? ну так почему бы просто не создать Event dispatcher и вызывать его? хммм ну ладно
Для этого существуют Messaging вещи
Сам наблюдатель может быть расширен(тут в видео просто каркас), и туда хоть диспатчеры хоть события
ну вроде реализация +- приемлемая хммм
мужик, извини, но я в твоём видел не увидел ни наблюдателя, ни даже колбека, похоже у тебя GameMode всего лишь вытягивает данные из виджета
ну может он потом будет вызывать на каждом тике таймера диспетчер хммм
Каким образом GM вытягивает данные? он же просто холостой по факту, не?
Не совсем корректно выразился, данные он у тебя не вытягивает, но судя по твоим нодам наблюдателем является именно GM (иначе зачем он печатает "Observe?". И честно говоря, я вообще очень плохо понимаю что ты попытался изобразить. У тебя в ГМ зачем-то таймер, он обновляется, пока кроме печати ничего не происходит, и останавливается он, как правильно заметили, почему-то из виджета
Я показал каркас идеи а не готовую реализацию(архитектуру)
в общем такой разговор получается слишком абстрактным. Из того, что у тебя сейчас реализовано - вообще мало чего можно понять, ты запускаешь таймер, потом его останавливаешь - всё, здесь сложно что-либо обсуждать. Хотя есть к чему придраться - запуск таймера у тебя в одном классе, остановка в другом, это как минимум подозрительно. Ну и наблюдателем здесь и не пахнет, когда один класс просто подсасывает данные другого класса - это так себе наблюдение. Вернее данные он, конечно, получит, но в твоём примере сейчас и этого нет. А классический шаблон реализуется через подписки.
https://www.youtube.com/watch?v=VeSWefm7BQc
Это пример механизма обратного вызова (callbacks), а не наблюдателя Вот классический наблюдатель https://en.wikipedia.org/wiki/Observer_pattern И обрати внимание, что коллбэков в нём нет
Да он в чарактере делает так как сам чел меняет, а если мой наблюдатель должен контроллировать основные аспекты игры?
Спасибо, буду разбираться
не забываю, я гибридно пишу
Не лез бы ты в дебри и не делал вид, что понимаешь эти паттерны.. Напиши что конкретно тебе нужно реализовать, по русски, без выкрутасов. Думаю тогда помогут. Сейчас от тебя идет набор псевдо умного текста и каждый додумывает своё, что ты там имел ввиду
Ну как я понимаю, если брать тетрис как пример то подписка будет удобна чтобы разрушить все обьекты в линии(или например вызвать game over при переполнении), а как ты на основе подписки сделаешь контроль горизонтального и вертикального заполнения ячеек? Допустим у тебя будет некая функция которая будет мониторить эту заполненность -ну ок, а куда ты ее засунешь? Когда есть некая однозначность - типа нажатой кнопки или взятии тортика тогда диспатчеры имеют понятное применение(так как реализаторы нажима кнопки или сам колайдинг это уже написанно до тебя), ты не озадачиваешься написанием самого факта нажатия кнопки.
ну если это допустим тетрис то возможно вызвать событие когда кубик падает на поле и допустим проводить несколько проверок допустим заполнения поля и ТД
Ну согласись тут подписка не играет ключевую архитектурную особенность, тут достаточно и простого вызова функции или события
Обсуждают сегодня