[Unity] 유니티에서 DoTween의 사용법과 기본 개념에 관하여
개요
DOTween은 유니티에서 트위닝(Tweening)을 쉽게 구현할 수 있도록 도와주는 강력한 에셋입니다.
트위닝이란, 시작 값과 종료 값을 지정해주면 그 사이의 값을 부드럽게 변화시켜 애니메이션 효과를 만드는 기법입니다. 예를 들어 오브젝트를 부드럽게 이동시키거나, 색상을 서서히 바꾸거나, 크기를 자연스럽게 조절하는 등의 효과를 간단하게 구현할 수 있습니다.
즉, 코드베이스로 Animation을 구현할 때 사용하면 매우 좋습니다. 현직에서도 많이 사용하니 반드시 익혀두시는것을 강력히 추천합니다.
특징
-
간단한 사용법: DOTween은 직관적인 API를 제공하여 코드를 몇 줄만 작성해도 원하는 애니메이션 효과를 만들 수 있습니다. 마치 레시피를 따라 요리하는 것처럼, DOTween의 함수들을 조합하여 쉽게 애니메이션을 구현할 수 있습니다.
-
다양한 트위닝 기능: 이동, 회전, 크기 조절뿐만 아니라 색상, 알파값, 텍스트, UI 등 다양한 속성을 트위닝할 수 있습니다. 마치 만능 도구처럼, DOTween 하나로 거의 모든 종류의 애니메이션을 만들 수 있습니다.
-
높은 성능: 최적화된 코드로 제작되어 게임의 성능에 미치는 영향이 적습니다. 마치 스포츠카처럼, DOTween은 빠른 속도와 안정적인 성능을 자랑합니다.
-
유연한 제어: 트위닝의 시작, 종료, 지연, 반복, 속도 변화 등을 세밀하게 제어할 수 있습니다. 마치 영화 감독처럼, DOTween을 사용하여 애니메이션의 타이밍과 흐름을 자유롭게 조절할 수 있습니다.
-
시퀀스 기능: 여러 개의 트위닝을 순차적 또는 동시에 실행할 수 있는 시퀀스 기능을 제공합니다. 마치 오케스트라 지휘자처럼, DOTween을 사용하여 여러 애니메이션을 조화롭게 연출할 수 있습니다.
-
다양한 이징(Easing) 함수 제공: 트위닝의 속도 변화를 조절할 수 있는 다양한 이징 함수(선형, 가속, 감속, 탄성 등)를 제공하여 더욱 자연스러운 애니메이션을 만들 수 있습니다. 마치 피아니스트처럼, DOTween을 사용하여 애니메이션에 다양한 감정을 표현할 수 있습니다.
-
Time.timeScale 지원: 게임 일시정지(Time.timeScale = 0) 상태에서도 DOTween을 작동시킬 수 있습니다. 마치 시계처럼, DOTween은 게임의 흐름에 상관없이 정확한 타이밍으로 애니메이션을 재생할 수 있습니다.
장점
-
애니메이션 구현 생산성 향상: 복잡한 애니메이션을 몇 줄의 코드로 간단하게 구현할 수 있어 개발 시간을 단축하고 생산성을 향상시킵니다. 마치 마법 지팡이처럼, DOTween은 애니메이션 구현에 필요한 노력을 줄여줍니다.
-
다양한 기능 제공: 다양한 트위닝 기능, 시퀀스 기능, 이징 함수 등을 제공하여 복잡한 애니메이션도 쉽게 구현할 수 있습니다. 마치 스위스 아미 나이프처럼, DOTween 하나로 다양한 종류의 애니메이션을 만들 수 있습니다.
-
높은 성능: 최적화된 코드로 제작되어 게임의 성능에 미치는 영향이 적습니다. 마치 엔진 오일을 잘 관리한 자동차처럼, DOTween은 게임의 성능을 유지하면서 멋진 애니메이션을 제공합니다.
-
활발한 커뮤니티와 풍부한 자료: 활발한 커뮤니티와 풍부한 자료를 통해 문제 해결에 도움을 받을 수 있습니다. 마치 온라인 백과사전처럼, DOTween 커뮤니티는 궁금한 점을 해결하고 정보를 얻을 수 있는 유용한 공간입니다.
주의점
-
DOTween 초기화: 일반적으로 DOTween.Init(); 함수를 사용하여 DOTween을 초기화합니다. (필수는 아니며, 기본값으로 자동 초기화됨) 마치 자동차 시동을 거는 것처럼, DOTween을 사용하기 전에 초기화 과정을 거쳐야 합니다.
-
메모리 관리: 더 이상 필요하지 않은 트위닝은 Kill() 함수를 사용하여 명시적으로 종료하여 메모리 누수를 방지해야 합니다. 마치 쓰레기를 분리수거하는 것처럼, 사용하지 않는 트위닝은 정리하여 메모리를 효율적으로 관리해야 합니다.
-
SetUpdate(true) 사용 시 주의: Time.timeScale이 0일 때 DOTween을 작동시키기 위해 .SetUpdate(true)를 사용하는데, 이 경우 Time.unscaledDeltaTime을 사용하여 시간 계산을 하므로, 다른 시간 기반 로직과 충돌이 발생하지 않도록 주의해야 합니다. 마치 비상 운전을 하는 것처럼, .SetUpdate(true)를 사용할 때는 주의하여 코드를 작성해야 합니다.
사용법
-
DOTween 설치: 유니티 에셋 스토어에서 DOTween을 검색하여 프로젝트에 추가합니다. 마치 앱 스토어에서 앱을 다운로드하는 것처럼, DOTween을 간편하게 설치할 수 있습니다.
-
네임스페이스 추가: 스크립트 상단에 using DG.Tweening;을 추가합니다. 마치 도서관에서 책을 찾기 위해 분류 번호를 확인하는 것처럼, DOTween의 기능을 사용하기 위해 네임스페이스를 추가해야 합니다.
-
트위닝 함수 사용: 다양한 트위닝 함수를 사용하여 원하는 애니메이션 효과를 구현합니다. 마치 블록을 쌓듯이, DOTween의 함수들을 조합하여 복잡한 애니메이션을 만들 수 있습니다.
- DOMove(): 오브젝트를 지정된 위치로 이동시킵니다.
- DORotate(): 오브젝트를 지정된 각도로 회전시킵니다.
- DOScale(): 오브젝트의 크기를 조절합니다.
- DOColor(): 머티리얼의 색상을 변경합니다.
- DOFade(): 캔버스 그룹의 알파값을 조절합니다.
[DOMove] : 오브젝트를 지정된 위치로 이동시킵니다.
transform.DOMove(new Vector3(10, 0, 0), 1f); // 1초 동안 x축으로 10만큼 이동
[DORotate] : 오브젝트를 지정된 각도로 회전시킵니다.
transform.DORotate(new Vector3(0, 180, 0), 1f); // 1초 동안 y축으로 180도 회전
[DOScale] : 오브젝트의 크기를 조절합니다.
transform.DOScale(new Vector3(2, 2, 2), 1f); // 1초 동안 2배 크기로 확대
[DOColor] : 머티리얼의 색상을 변경합니다.
GetComponent<Renderer>().material.DOColor(Color.red, 1f); // 1초 동안 빨간색으로 변경
[DOFade] : 캔버스 그룹의 알파값을 조절합니다.
canvasGroup.DOFade(0f, 1f); // 1초 동안 투명하게 변경
DOTween 활용 팁
- 체인 함수: 트위닝 함수를 체인처럼 연결하여 더욱 간결하고 가독성 좋은 코드를 작성할 수 있습니다.
- 시퀀스: 여러 개의 트위닝을 순차적 또는 동시에 실행하여 복잡한 애니메이션을 쉽게 만들 수 있습니다.
- 이징 함수: 다양한 이징 함수를 활용하여 애니메이션의 속도 변화를 조절하고 더욱 자연스러운 움직임을 연출할 수 있습니다.