포스트

DoTween 사용하기

이 글은 제 개인적인 공부를 위해 작성한 글입니다.
틀린 내용이 있을 수 있고, 피드백은 환영합니다.

DoTween?


DoTween은 빠르고 효율적이며 완전한 타입 안전성을 갖춘 유니티용 객체 지향 애니메이션 엔진으로, C# 사용자에게 최적화되어 있고 무료 오픈 소스이며 다양한 고급 기능을 제공합니다.

라고 DoTween 공식 홈페이지에 적혀있다.

요 몇 주 동안 DoTween을 사용해 보았는데, 너무 편해서 사용법을 정리할 겸 포스팅을 작성한다.


뭐가 편한지?


사용하면서 느낀 편한 점을 나열해 보면,

  1. 간단하게 애니메이션 연출 가능 (움직임, Fade 효과, 스케일 변경 등등)
  2. 코루틴으로 구현하던 연출들을 DoTween으로 대체 가능 (코루틴 제어를 위한 변수가 필요 없어진다!)
  3. Invoke 대체 가능 등등 이 있었던 거 같다


Prefixes


DoTween엔 특수한 접두사들이 몇 개 있다.

  1. DO : 모든 트윈 단축키(transform이나 material과 같은 컴포넌트에서 시작할 수 있는 작업)의 접두사이다. 메인 DOTween 클래스의 접두사이기도 하다.

transform.DOMoveX(5, 1);

  1. Set : 트윈에 연결할 수 있는 모든 설정의 접두사이다.

transform.DOMoveX(5, 1).SetEase(Ease.OutBounce);

  1. On : 트윈에 연결할 수 있는 모든 콜백의 접두사이다.

transform.DOMoveX(5, 1).OnComplete(MyCallback);


Creating a Tweener


트위너는 DoTween의 일하는 개미라고 생각하면 된다.

트위너를 만드는 방법은 아래 3가지가 있는데, 이 포스트에선 Shortcut way만 다루겠다.

  1. The Generic way
  2. The Shortcut way
  3. The Additional Generic ways.

Shortcut way를 사용하면 transform이나 rigidbody와 같은 유니티 컴포넌트에서 아래와 같이 바로 DoTween을 호출할 수 있다.
transform.DOMoveX(5, 1);
rigidbody.DOMoveX(5, 1);
spriteRenderer.DOFade(0, 1);


Basic elements shortcuts


DoTween은 다양한 기본 요소들을 제공한다.

  1. Move : transform.DOMoveX(5, 1);
    (Param : float to, float duration)
  2. Rotate : transform.DORotate(new Vector3(0, 180, 0), 1);
    (Param : Vector3 to, float duration)
  3. Scale : transform.DOScale(new Vector3(2, 2, 2), 1);
    (Param : Vector3 to, float duration)
  4. Fade : spriteRenderer.DOFade(0, 1);
    (Param : float to, float duration)
  5. Color : spriteRenderer.DOColor(Color.red, 1);
    (Param : Color to, float duration)
  6. Text : text.DOText("Hello World", 1);
    (Param : string to, float duration, 텍스트 타이핑 효과)

이외에도 정말 많으니까 공식 도큐먼트를 보고 사용하면 된다.
움직이거나 회전, 스케일 변화 등을 간단하게 연출할 수 있어 잘 사용하면 정말 편리한 것 같다.

그리고 Invoke를 대체할 수 있는 DOVirtual.DelayedCall도 있다.
DOVirtual.DelayedCall(1, MyCallback);
(Param : float delay, TweenCallback callback)

기존 Invoke는 함수를 string으로 넘겨주어야 했는데, DoTween은 함수를 직접 넘겨줄 수 있다.


참고


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.