Переключение стейтов – AppRouter
Обновлено 17 января 2023
В AppRouter прописаны переключения между основными стейтами приложения, а также обеспечена проверка требований к их отображению. Рекомендуется использовать AppRouter как верхнеуровневое API фреймворка
Находится на сцене Main, на объекте Canvas → UserCanvas
Представляет собой Singleton, поддерживает обращения через AppRouter.Instance.
AppRouter условно разделён на две части:
Используя AppRouter вы можете менять местами стейты приложения. Описание доступных по умолчанию стейтов:
Также при необходимости вы можете добавлять собственные стейты. Для этого рекомендуется придерживаться заложенной архитектуры:
- Сверстайте стейт в виде отдельного GameObject, в иерархии разместите его внутри Canvas → UserCanvas.
- Добавьте управляющие скрипты – “<Названиестейта>State” (должен наследоваться от класса State) и “<Названиестейта>StateView”. Первый отвечает за логику стейта, второй за его отображение.
- В “<Название_стейта>State” добавьте функцию Init для передачи необходимых для работы и отображения стейта данных; при необходимости вы можете прописать возможность задать колбеки для переопределения стандартного поведения по аналогии с основными стейтами.
- Добавьте в AppRouter отдельную функцию для перехода на ваш стейт. Внутри неё сделайте проверку на условия перехода и необходимую подготовку, после чего получите ваш стейт из иерархии, проинициализируйте необходимыми параметрами и переключитесь на него, используя stateSwitcher.
var myState = stateSwitcher.GetState<<Название_стейта>State>()
myState.Init(...);
stateSwitcher.SwitchState(myState, animation);
- Вызовите созданную функцию из нужного места для перехода на созданный вами стейт