Событие / Действие с обратным вызовом при добавлении слушателя - PullRequest
0 голосов
/ 30 января 2020

Так что в контексте разработки игр в Unity. Мы пришли к дизайну, в котором пользовательский интерфейс часто при инициализации подписывается на событие или действие, которое мы ожидаем вызывать, когда содержимое указанного элемента UI или его части должно что-то делать.

Пример: CurrencyCounter слушает CurrencyManager.OnCurrencyChange.

Теперь, с чем мы часто сталкиваемся, это почти всегда. Любой пользовательский интерфейс, который инициализируется, после того, как все основные системы уже инициализированы. И когда мы добавим слушателя. Значение валюты уже было установлено, например, путем загрузки сохраненных данных. Что может вызвать событие OnCurrencyChange, но даже если бы оно произошло, никто еще не слушал.

В результате код всегда добавляет вторую строку после добавления себя в качестве прослушивателя, который обновляет тот же метод, но с CurrencyController.CurrentCurrencyValue или чем-то подобным, чтобы обновить его непосредственно при инициализации, чтобы пользовательский интерфейс выглядел правильно, пока не произойдет первое фактическое событие. Поскольку это может занять несколько минут в зависимости от того, какие данные он прослушивает в контексте.

Я часто думал о том, чтобы просто написать что-то, чтобы отправить ложное «событие» тому, кто просто добавляет себя в качестве слушателя. Таким образом, он пропускает эту дополнительную строку кода на каждом пользовательском интерфейсе, который требует этого. Однако это не всегда желаемый способ сделать это. Во многих событиях вы не хотите, чтобы новый слушатель получал фальшивое событие, было бы очень сложно запутаться.

Есть ли что-то, что делает то, что я пытаюсь сделать? Другой тип Действие / Событие, которое позволяет в AddListener с логическим значением сказать, что оно хочет получить значение обратно напрямую? Или это вообще не имеет смысла?

...