DoTween

DOTween
DOTween은 값이 시작점에서 목표점까지 자연스럽게 변하도록 만들어 주는 Unity용 애니메이션 라이브러리입니다. Unity 기본 기능은 아니며 별도로 설치합니다. Update()나 코루틴을 직접 작성하지 않고도 UI 이동, 확대, 페이드 등을 간단하게 구현할 수 있습니다.
→ 유니티의 Update, Coroutine, Time.deltaTime, Lerp을 대신해서 쓴다고 생각하면 됨
| 기능 | 대표 메서드 | 용도 |
|---|---|---|
| 위치 이동 | DOMove, DOAnchorPos | 오브젝트·UI 이동 |
| 크기 변경 | DOScale | 팝업 확대·축소 |
| 회전 | DORotate | 아이콘 회전 |
| 투명도 | DOFade | UI 페이드 인·아웃 |
| 움직임 곡선 | SetEase | 부드럽거나 튕기는 움직임 |
| 반복 | SetLoops | 무한 회전, 깜빡임 |
| 완료 처리 | OnComplete | 애니메이션 종료 후 실행 |
| 순차 실행 | Sequence | 여러 애니메이션 조합 |
사용하려면 스크립트 위에 네임스페이스를 추가합니다.
using DG.Tweening;
UI 패널을 중앙으로 이동시키는 예시입니다.
panel.DOAnchorPos(Vector2.zero, 0.4f).SetEase(Ease.OutCubic);
Canvas Group을 이용한 페이드 인은 다음처럼 작성합니다.
canvasGroup.DOFade(1f, 0.3f).OnComplete(() => Debug.Log("표시 완료"));
여러 효과를 조합할 때는 Sequence를 사용합니다.
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)를 붙이는 것이 안전합니다.
panel.DOScale(1f, 0.3f)
.SetUpdate(true)
.SetLink(gameObject);
단순하고 동적인 UI 연출은 DOTween, 복잡하게 제작된 캐릭터·컷신 애니메이션은 Animator가 적합합니다.



