Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Я лично считаю этот способ менее удобным, чем второй, поскольку требует лишних телодвижений.
Создание обертки над классом MonoBehaviour:
А как это система относится к изменениям в цепочках команд?В разделе Mapping command написано, что процесс биндинга команд к сигналам можно выполнять где и когда угодно. Если вы об этом.
И что если в цепочке у нас может быть 8-10 событий?Событий или команд? Если команд, то системе все равно, какое кол-во. Так же, как и синхронная команда или асинхронная. Для этого нужно лишь правильно реализовать команду.
Или например в каких-то командах после тестов гейм-дизайнерами необходимо поменять передаваемые данные?Первый способ — вызывать сигнал с параметрами, тогда эти параметры будут передаваться в команду. Второй — ничего не мешает в самой команде обратиться к сервису или модели. Например:
class StartGameCommand : EventCommand
{
[Inject]
public ITimer gameTimer{get;set;}
override public void Execute()
{
gameTimer.start();
}
}
Или нам надо протестировать в этой цепочки источник и конечного элемент, а у нас еще не готов код промежуточных команд?Этим и крут данный подход, что можно дополнять цепочку команд по мере готовности, можно изменять порядок команд, заменять одну на другую, можно ставить заглушки для команд(как раз Ваш случай).
if (StartEvent != null)
{
StartEvent();
}StartEvent?.Invoke();
Система сообщений или “мягкая связь” между компонентами для Unity3D