Добавлен , опубликован

Изучаем CliCli

Содержание:
Иногда мы хотим создать бафф, который делает что-то, пока находится на юните. Например "Пока бафф на цели, каждое его применение способности наносит ему 50 урона". Было бы здорово иметь инструмент, позволяющий создавать триггеры во время игры, а также удалять их. В этом нам помогут саб-триггеры.
Саб-триггер - это динамически существующий тип триггеров, который существует не с момента начала сессии, а с момента его создания.
Давайте создадим саб-триггер. Выбрав триггер, и нажав правую кнопку мыши, мы сможем нажать на New sub-trigger для его создания.
Интерфейс саб-триггера очень похож на обычный триггер - мы можем добавить события, условия, действия.
В чем отличие? Если мы добавим какое-либо событие в саб-триггер, например, действие на сообщение в дебаг лог и событие на нажатие клавиши мыши, то во время игры нажатие клавиши мыши не будет вызывать срабатывание саб-триггера.
Почему он не работает? В отличии от триггеров, саб-триггеры нужно создавать. На данный момент мы только прописали поведение триггера, но ещё не создали его. Чтобы создать саб-триггер, нам нужно запустить триггер, в котором находится саб-триггер. В таком случае саб-триггер будет работать.
Обратите внимание. Если мы второй раз запустим триггер с шаблоном саб-триггера, то создастся ещё один саб-триггер.

Саб-Триггеры в Переменных

Саб-триггеры можно помещать в переменные типа Dynamic Trigger Case.
Благодаря этому мы сможем удалить саб-триггер в будущем, используя действие "Trigger - Remove Dynamic Trigger".

Саб-Триггеры и Локальные Переменные

Как было сказано ранее, локальные переменные существуют в пределах запуска триггера. Но саб-триггеры (а также таймеры и муверы) обладают способностью запоминать информацию из локальных переменных в момент создания.
На изображении выше, у нас имеется цикл, который создает 4 саб-триггера. Каждый из них при нажатии на клавишу мыши напишет в дебаг лог одну из цифр: 1, 2, 3, 4.
Как это работает? В момент создания саб-триггера, он смотрит, какие локальные переменные используются внутри него. Если он находит одну из них, он переносит данные из локальной переменной во внутреннюю невидимую для нас переменную, которая будет использоваться вместо локальной переменной. По итогу, после того, как локальная переменная перестанет существовать, её данные на момент создания саб-триггера останутся внутри него.
Обратите внимание. Эта особенность работает только с локальными переменными. Переменные объекта и глобальные переменные работают так, как и обычно.

Переменные Саб-триггера

Саб-триггеры также могут иметь свои переменные - переменные саб-триггера. Чтобы создать одну из них, нам нужно нажать на кнопку [Local Variable] правее от имени саб-триггера. У нас откроется менеджер переменных, в котором мы сможем создать переменную через кнопку New Variable.
Переменные саб-триггера, аналогично локальным переменным в триггерах, существуют во время запуска саб-триггера и нужны как замена локальным переменных, так как локальные переменные используются в процессе запоминания информации.

Примеры Практического Применения

Модификатор с описанием: "Пока модификатор на цели, использование ею способностей наносит ей 50 урона".
Открыть
Создание действий с событием "при нажатии на кнопку" с возможностью итерации и использования индекса.
Открыть
Добавление уникальных особенностей для сущностей без использования наследования. В данном случае, любой юнит с тегом Fish будет писать в дебаг лог "Splash!" после получения урона.
Открыть

`
ОЖИДАНИЕ РЕКЛАМЫ...