Состояния
Состояния позволяют сохранить несколько видов объекта и переключаться между ними. Это пригодится для выключателя, двери, подсветки или товара в нескольких цветах.
Состояние — это сохранённая копия настроек объекта: где он стоит, какого он цвета, виден ли он, какая анимация выбрана. Переключитесь на состояние, и объект снова примет этот вид.
Когда нужны состояния
| Что нужно | Что использовать |
|---|---|
| Выключатель: включён и выключен | состояния |
| Дверь: закрыта, открыта, заперта | состояния |
| Товар в трёх цветах | состояния |
| Персонаж идёт по маршруту | анимация |
| Что-то меняется на вычисленную величину | патч или скрипт |
Простое правило: фиксированный набор ситуаций с названиями — это состояния. Всё, что меняется непрерывно, — это анимация.
Создайте состояния
- Выберите объект.
- В инспекторе нажмите + новый компонент и выберите Состояния. Первое состояние, По умолчанию, сохраняет объект таким, какой он сейчас.
- Нажмите + добавить состояние. Новое состояние сразу выбрано.
- Измените объект: переместите, перекрасьте, скройте. Выбранное состояние сохраняет изменения на ходу.
- Повторите шаги 3 и 4 для каждого нужного состояния.
Чтобы посмотреть состояние, нажмите на него в списке.
Когда вы меняете объект, меняется выбранное состояние, а не сам объект. Пока вы собираете состояния, так и нужно. Но если вы забыли, что состояние выбрано, после переключения может показаться, что изменение «не сохранилось».
Переключайте состояния
В событии используйте шаг Переключить состояние. Выберите состояние и, если нужно, длительность и сглаживание.
С длительностью объект меняется плавно. Он перетекает из текущего вида в сохранённый, а не перескакивает. Получается анимация, которую не пришлось делать.
| Откуда переключать | Как |
|---|---|
| Из события | шагом Переключить состояние |
| Из патча | нодой set_states |
| Из скрипта | запишите activeStateId в компонент States |
Реагируйте на переключение
На объекте, у которого сменилось состояние, срабатывают два триггера:
| Триггер | Срабатывает, когда |
|---|---|
| Активация состояния | объект перешёл в выбранное состояние |
| Деактивация состояния | объект вышел из этого состояния |
Каждое событие следит за одним состоянием — его вы выбираете в поле Состояние. Поэтому один объект может по-разному реагировать на каждое состояние. Например, дверь может показывать одну табличку, когда открывается, и другую, когда закрывается, — без всяких условий.
В отличие от нажатия, смена состояния не доходит до родителей объекта.
Измените пару свойств без состояния
Иногда нужно «как сейчас, только красным», и заводить ради этого целое состояние не хочется. Используйте шаг Изменить свойства. Он один раз применяет несколько значений, как временное состояние. Длительность и сглаживание у него настраиваются так же.
Он подходит для быстрой подсветки при наведении или вспышки при попадании. А настоящие состояния оставьте для ситуаций, которые у объекта действительно бывают.
Что сохраняет состояние
Состояние сохраняет компоненты объекта. Позиция, поворот, масштаб, материал, видимость и всё остальное переключаются вместе.
Дочерние объекты в состояние не попадают. Чтобы переключать группу, дайте каждому объекту свои состояния. А переключайте их все из одного события: в поле Объект у шага можно выбрать несколько объектов.
На что обратить внимание
- Состояние, которое осталось выбранным в редакторе, забирает ваши правки. Если объект всё время возвращается к старому виду, проверьте, какое состояние выбрано.
- Состояния и анимация на одном объекте мешают друг другу. Используйте что-то одно.
- Если удалить компонент, он удалится и из всех состояний.
- Если выбранного состояния больше нет, используется первое.
Дальше: Патчи — логика, которую собирают из нод.