<유니티> DOTween

상태
시작 전
담당자
날짜
숫자
0

DOTween이란?

DOTween은 유니티에서 자주 사용하는 트윈(tweening) 라이브러리입니다.
트윈이란 시간에 따라 어떤 값을 부드럽게 변화시키는 애니메이션 기법을 말합니다. 예를 들어, 오브젝트의 위치, 회전, 크기, 색상 등을 시간에 따라 자연스럽게 변화시킬 수 있습니다.

DOTween의 기본 설정

DOTween.Init(autoKillMode, useSafeMode, logBehavior);
DOTween은 위와 같이 세 개의 값을 파라미터로 받습니다.
autoKillMode : 한 번 사용한 DOTween을 재사용할지 결정합니다. (true / false)
useSafeMode : 약간 느리지만 실행되는 동안, 실행 대상이 파괴될 경우와 같이 예외 상황을 자동으로 처리해줍니다. 기본적으로 true. (true / false)
logBehaviour : 오류 메세지 기록 설정 1. logBehaviour.Default : 오류 및 경고만 기록. 성능에 영향을 최소화하면서 문제 발생 시에만 로그 확인 가능. 2. logBehaviour.Verbose : 모든 트윈의 상태 변화를 출력하므로 디버깅 과정에서 트윈이 어떻게 동작하는지 상세히 추적 가능. 하지만 성능에 약간의 영향을 줄 수 있습니다. 3. logBehaviour.ErrorsOnly : 오류만 기록. 디버깅할 때 불필요한 메세지를 제거하고, 심각한 문제에만 집중합니다.
만약 DOTween을 재사용하지 않고, 예외 상황을 자동으로 처리하면서, 모든 트윈의 상태 변화를 출력하고 싶다면 DOTween.Init(true, true, logBehaviour.Verbose); 이런 식으로 코드를 사용하면 됩니다.
DOTween의 기본 설정을 별도로 하지 않으면, DOTween은 내부적으로 기본 값으로 초기화됩니다. DOTween.Init(); 이 코드를 통해 기본 값으로 초기화가 가능한데, 기본 값은 true, true, logBehaviour.Default 입니다.
DOTween.Init();를 아예 호출하지 않아도 DOTween은 첫 번째 트윈이 생성될 때 자동으로 초기화를 수행하기에 DOTween.Init();를 생략해도 기본적인 동작에는 문제가 없습니다.

DOTween 내장 함수

DOTween의 내장 함수는 오브젝트의 애니메이션을 쉽게 다루기 위해 다양한 기능을 제공합니다. 주로 사용되는 함수는 트윈을 생성하고 제어하는 함수들입니다.
DO : 대상의 변화를 직접 지시할 수 있음 (Tween의 시작)
Set : Tween에 대한 추가 설정
On : 람다를 이용한 콜백함수 실행
주요 DOTween 내장 함수
DOTween 내장 함수 중 많이 사용되는 함수들을 알아보겠습니다.
1.
DOMove
오브젝트를 특정 위치로 부드럽게 이동시킬 때 사용합니다.
사용법 : transform.DOMove(Vector3 targetPosition, float duration);
예시
transform.DOMove(new Vector3(3,0,0),2.0f); // 오브젝트가 (3,0,0) 위치로 2초 동안 이동
C#
복사
2.
DORotate
오브젝트를 특정 각도로 회전시킬 때 사용합니다.
사용법 : transform.DORotate(Vector3 endValue, float duration);
예시
transform.DORotate(new Vector3(0,180,0),1.0f); // 오브젝트가 (3,0,0) 위치로 Y축을 기준으로 180도 회전
C#
복사
3.
DOScale
오브젝트의 크기를 특정 크기로 변화시킬 때 사용합니다.
사용법 : transform.DOScale(Vector3 targetScale, float duration);
예시
transform.DOScale(new Vector3(2,2,2),1.5f); // 오브젝트가 1.5초동안 2배로 커짐
C#
복사
4.
DOFade
오브젝트의 알파 값을 조정해 투명도를 변화시킬 때 사용합니다. 주로 UI 요소나 Sprite Renderer에서 많이 사용됩니다.
사용법 : image.DOFade(flaot endValue, float duration);
예시
imgae.DOFade(0, 2.0f); // 이미지가 2초 동안 서서히 사라짐 (투명도 0)
C#
복사
5.
DOColor
오브젝트의 색상을 변경할 때 사용합니다. 주로 UI나 2D Sprite에서 사용합니다.
사용법 : spirteRenderer.DOColor(Color targetColor, float duration);
예시
spriteRenderer.DOColor(Color.red, 1.0f); // 스프라이트의 색상이 1초 동안 빨간색으로 변경
C#
복사
6.
DOShakePosition
오브젝트의 위치를 흔드는 애니메이션을 만들 때 사용합니다. 흔들림 효과를 통해 충돌이나 타격감을 줄 수 있습니다.
사용법 : transform.DOShakePosition(float duration, float strength);
예시
transform.DOShakePosition(1.0f, 2.0f); // 오브젝트가 1초 동안 강도 2로 흔들림
C#
복사
7.
SetLoops
트윈을 반복시키고 싶을 때 사용합니다. (무한 반복도 가능)
사용법 : tween.SetLoops(int loops, LoopType loopType);
예시
transform.DOMove(new Vector3(3,0,0),2.0f).SetLoops(-1, LoopType.Yoyo); // 무한 반복하며, 이동 후 반대로 돌아옴
C#
복사
8.
OnComplete
트윈이 완료된 후 호출될 콜백 함수를 지정할 때 사용합니다.
사용법 : tween.OnComplete(Action callback);
예시
transform.DOMove(new Vector3(3,0,0),2.0f).OnComplete(()=> Debug.Log("이동 완료")); // 이동이 끝나면 메세지 출력
C#
복사

Tweener

Tweener는 DOTween에서 생성된 트윈 객체를 제어하고 재사용할 수 있는 클래스입니다. 트윈 애니메이션이 시작되면 해당 트윈은 Tweener 객체로 반환됩니다. 트윈을 코드에서 재사용 가능한 형태로 관리하고 싶다면, Tweener를 변수로 저장해 필요할 때마다 재사용할 수 있습니다. 이렇게 하면 코드 재사용성이 크게 향상됩니다.

Tweener 사용 예시

using UnityEngine; using DG.Tweening; public class DOTweenTest : MonoBehaviour { private Tweener moveTweener; // Tweener를 변수로 저장 private void Start() { moveTweener = transform.DOMove(new Vector3(5, 0, 0), 2.0f).SetAutoKill(false); // Tweener를 생성하고 변수에 저장 // 자동으로 제거되지 않도록 설정 moveTweener.OnComplete(() => Debug.Log("트윈 완료")); } private void Update() { // moveTweener.Restart(); // 트윈 재시작 // moveTweener.Pause(); // 트윈 일시정지 // moveTweener.Play(); // 트윈 재생 // moveTweener.Kill(); // 트윈 삭제 // 트윈을 재사용할 필요가 없다면 이를 완전히 삭제함으로써 메모리 누수 방지 } }
C#
복사

Sequence

Sequence는 여러 트윈을 조합하여 순서대로 실행하거나, 동시에 실행할 수 있는 트윈 그룹을 만들어 줍니다.

Sequece 주요 함수들

1.
sequence.Append
새로운 트윈을 순차적으로 추가합니다. 즉, 앞선 트윈이 끝난 후에 다음 트윈이 실행됩니다.
사용법 : sequence.Append(tween);
2.
sequence.Join
새로운 트윈을 동시에 실행합니다. 이전에 추가된 트윈과 동일한 시간에 시작됩니다.
사용법 : sequence.Join(tween)
3.
sequence.Prepend
새로운 트윈을 앞쪽에 추가합니다. 즉, 기존 트윈이 시작되기 전에 먼저 실행됩니다.
사용법 : sequence.Prepend(tween)
4.
sequence.Insert
특정 시간에 트윈을 삽입합니다. 트윈이 전체 애니메이션의 특정 시간대에 맞춰 실행됩니다.
사용법 : sequence.Insert(float time, tween);
5.
sequence.AppenInterval
지연 시간을 추가합니다. 특정 시간만큼 대기한 후 다음 트윈이 실행됩니다.
사용법 : sequence.AppendInterval(float delay);
6.
sequence.PrependInterval
앞쪽에 지연 시간을 추가합니다. 기존 트윈이 시작되기 전에 대기 시간이 추가됩니다.
사용법 : sequence.PrependInterval(float delay);

Sequence 사용 예시

using UnityEngine; using DG.Tweening; public class DOTweenTest : MonoBehaviour { void Start() { // 새로운 시퀀스 생성 Sequence sequence = DOTween.Sequence(); // 트윈 순차적으로 추가 sequence.Append(transform.DOMove(new Vector3(3, 0, 0), 1f)); // 1초 동안 이동 sequence.Append(transform.DORotate(new Vector3(0, 180, 0), 1f)); // 1초 동안 회전 } }
C#
복사