DOTween
Last updated
Last updated
DOTween используется для анимирования объектов кодом. Обычный Animator при анимировании обновляет параметры объекта каждый кадр. Если объектов много, даже если они стоят на месте, то аниматор всё равно будет обновлять их значения. Больше всего это бьет по производительности при анимировании UI элементов, так как при изменении своих параметров, элемент вызывает перерисовку всего канваса. В отличии от ручного анимирования кодом, анимации с помощью DOTween можно быстро создавать одной строчкой
Все анимации обрабатываются специальными объектами под названием “твины”. Каждый твин отвечает за какую-то свою анимацию, перед запуском его можно настраивать как угодно.
Твины бывают 3 типов:
Generic – метод DOTween.TO/From. С его помощью можно анимировать любой объект, он универсальный
Shortcut – специализированные твины для разных объектов по типу Transform, Image, Rigidbody и т.д.
Sequence – последовательность из других твинов, который тоже из себя представляет твин
Это базовый и универсальный твин, с помощью которого можно анимировать любое значение. Он используется под капотом в других типах твинов. Он реализуется с помощью метода TO/From:
Метод принимает 2 лямбды, первая – геттер анимируемого параметра, второй – его сеттер. Далее идет конечное значение для этого параметра, и время, за которое надо плавно изменить этот параметр до конечного значения.
Это особые обертки в виде extensions методов, которые производят различного типа готовые анимации, надо лишь указать параметры. Полный список методов и классов, для которых они были сделаны есть в доке. Ниже будут примеры базовых shortcut’ов. Все они начинаются с префикса DO
Пример использования shotrtcut’а Transform.DOPath, который может пускать объект по вайпоинтам. Тут так же происходит задание сглаживания последним аргументом, и далее настройка твина: его повторение, и задания линейного движения
Этот тип твинов – лист из других. С помощью метода Apeend в него можно добавлять твины, и они запустятся на следующем кадре, последовательно исполняясь
Твины можно ставить на паузу (Pause), воспроизводить повторно (Restart), менять их направление анимации (Flip), или преждевременно завершать (Kill). Это можно делать со всеми твинами, через статические функции класса DOTween, или с какими-то конкретными твинами, обращаясь к ним через точку. Так же из активных твинов можно получать их состояние: воспроизводятся ли они сейчас, сколько времени прошло с начала анимации, получение длинны пути (если это waypoint tween) и много еще другого, полный список есть в документации
Твины после создания можно настраивать, вызывая методы с приставкой Set. В основном придется юзать SetLoop (задает кол-во повторений) и SerEase (задает график скорости перемещения со временем). Так же у твинов есть эвенты, на которые можно подписаться. Методы для подписки начинаются с префикса On (OnComplete, OnPlay и т.д.). Полный список эвентов и настроек можно глянуть в доке.