DoTween

심지태
∙∙조회 9
DoTween

DOTween

DOTween은 값이 시작점에서 목표점까지 자연스럽게 변하도록 만들어 주는 Unity용 애니메이션 라이브러리입니다. Unity 기본 기능은 아니며 별도로 설치합니다. Update()나 코루틴을 직접 작성하지 않고도 UI 이동, 확대, 페이드 등을 간단하게 구현할 수 있습니다.

→ 유니티의 Update, Coroutine, Time.deltaTime, Lerp을 대신해서 쓴다고 생각하면 됨

기능대표 메서드용도
위치 이동DOMove, DOAnchorPos오브젝트·UI 이동
크기 변경DOScale팝업 확대·축소
회전DORotate아이콘 회전
투명도DOFadeUI 페이드 인·아웃
움직임 곡선SetEase부드럽거나 튕기는 움직임
반복SetLoops무한 회전, 깜빡임
완료 처리OnComplete애니메이션 종료 후 실행
순차 실행Sequence여러 애니메이션 조합

사용하려면 스크립트 위에 네임스페이스를 추가합니다.

arduino
using DG.Tweening;

UI 패널을 중앙으로 이동시키는 예시입니다.

scss
panel.DOAnchorPos(Vector2.zero, 0.4f).SetEase(Ease.OutCubic);

Canvas Group을 이용한 페이드 인은 다음처럼 작성합니다.

scss
canvasGroup.DOFade(1f, 0.3f).OnComplete(() => Debug.Log("표시 완료"));

여러 효과를 조합할 때는 Sequence를 사용합니다.

ini
Sequence sequence = DOTween.Sequence();

sequence.Append(canvasGroup.DOFade(1f, 0.3f));
sequence.Join(panel.DOScale(1f, 0.3f));
sequence.AppendInterval(1f);
sequence.Append(canvasGroup.DOFade(0f, 0.3f));
  • Append: 앞 애니메이션이 끝난 뒤 실행
  • Join: 앞 애니메이션과 동시에 실행

일시정지 중에도 UI 애니메이션이 작동해야 한다면 SetUpdate(true)를 사용합니다. 또한 대상 오브젝트가 사라질 때 Tween도 정리되도록 SetLink(gameObject)를 붙이는 것이 안전합니다.

scss
panel.DOScale(1f, 0.3f)
     .SetUpdate(true)
     .SetLink(gameObject);

단순하고 동적인 UI 연출은 DOTween, 복잡하게 제작된 캐릭터·컷신 애니메이션은 Animator가 적합합니다.