Перейти к основному содержимому

Состояния

Состояния позволяют сохранить несколько видов объекта и переключаться между ними. Это пригодится для выключателя, двери, подсветки или товара в нескольких цветах.

Состояние — это сохранённая копия настроек объекта: где он стоит, какого он цвета, виден ли он, какая анимация выбрана. Переключитесь на состояние, и объект снова примет этот вид.

Когда нужны состояния​

Что нужноЧто использовать
Выключатель: включён и выключенсостояния
Дверь: закрыта, открыта, запертасостояния
Товар в трёх цветахсостояния
Персонаж идёт по маршрутуанимация
Что-то меняется на вычисленную величинупатч или скрипт

Простое правило: фиксированный набор ситуаций с названиями — это состояния. Всё, что меняется непрерывно, — это анимация.

Создайте состояния​

  1. Выберите объект.
  2. В инспекторе нажмите + новый компонент и выберите Состояния. Первое состояние, По умолчанию, сохраняет объект таким, какой он сейчас.
  3. Нажмите + добавить состояние. Новое состояние сразу выбрано.
  4. Измените объект: переместите, перекрасьте, скройте. Выбранное состояние сохраняет изменения на ходу.
  5. Повторите шаги 3 и 4 для каждого нужного состояния.

Чтобы посмотреть состояние, нажмите на него в списке.

Пока выбрано состояние, правки попадают в него

Когда вы меняете объект, меняется выбранное состояние, а не сам объект. Пока вы собираете состояния, так и нужно. Но если вы забыли, что состояние выбрано, после переключения может показаться, что изменение «не сохранилось».

Переключайте состояния​

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

С длительностью объект меняется плавно. Он перетекает из текущего вида в сохранённый, а не перескакивает. Получается анимация, которую не пришлось делать.

Откуда переключатьКак
Из событияшагом Переключить состояние
Из патчанодой set_states
Из скриптазапишите activeStateId в компонент States

Реагируйте на переключение​

На объекте, у которого сменилось состояние, срабатывают два триггера:

ТриггерСрабатывает, когда
Активация состоянияобъект перешёл в выбранное состояние
Деактивация состоянияобъект вышел из этого состояния

Каждое событие следит за одним состоянием — его вы выбираете в поле Состояние. Поэтому один объект может по-разному реагировать на каждое состояние. Например, дверь может показывать одну табличку, когда открывается, и другую, когда закрывается, — без всяких условий.

Эти триггеры получает только сам объект

В отличие от нажатия, смена состояния не доходит до родителей объекта.

Измените пару свойств без состояния​

Иногда нужно «как сейчас, только красным», и заводить ради этого целое состояние не хочется. Используйте шаг Изменить свойства. Он один раз применяет несколько значений, как временное состояние. Длительность и сглаживание у него настраиваются так же.

Он подходит для быстрой подсветки при наведении или вспышки при попадании. А настоящие состояния оставьте для ситуаций, которые у объекта действительно бывают.

Что сохраняет состояние​

Состояние сохраняет компоненты объекта. Позиция, поворот, масштаб, материал, видимость и всё остальное переключаются вместе.

Состояние относится к одному объекту

Дочерние объекты в состояние не попадают. Чтобы переключать группу, дайте каждому объекту свои состояния. А переключайте их все из одного события: в поле Объект у шага можно выбрать несколько объектов.

На что обратить внимание​

  • Состояние, которое осталось выбранным в редакторе, забирает ваши правки. Если объект всё время возвращается к старому виду, проверьте, какое состояние выбрано.
  • Состояния и анимация на одном объекте мешают друг другу. Используйте что-то одно.
  • Если удалить компонент, он удалится и из всех состояний.
  • Если выбранного состояния больше нет, используется первое.

Дальше: Патчи — логика, которую собирают из нод.