Unity | 유니티/Unity 개발 일지

[Unity] 애니메이션 도구 | DOTween 기능(1)

maintain_H 2023. 1. 10. 18:56
반응형

 

1. DOTween이란?

 

- DOTween is a fastefficientfully type-safe object-oriented animation engine for Unity, optimized for C# users, free and open-source, with tons of advanced features

 

DOTween 홈페이지에 나와있는 설명이다.

유니티에서 Tween을 표현할 때 사용하는 에셋이다.

Tweening이란 오브젝트의 시간당 변화를 의미하는데, 다양한 연출을 표현할 때 사용하는 것이다.

DOTween은 무료로 제공되고 있으며, 간편하게 다양한 연출을 구현할 수 있다.

그리고 HOTween의 다음 버전이라고 한다.

기존의 HOTween보다 4배 이상 빠르고 효율적이라고 한다. 

게임을 만들 때 GC 관리를 잘해야 하는데, DOTween은 필요없는 GC 할당을 피한다고 한다.

 

원래 홈페이지에는 좋은 말들만 써있으니 단점은 알려주신다면 감사하겠습니다 ㅎㅎ

 

 

 

2. DOTween 기능

 

DOTween에는 Transform, Rigidbody 뿐만 아니라 Material 및 Audio, UI 등 유니티 컴포넌트에 대해 Tweener를 지원한다.

웬만한 컴포넌트에 DOTweener를 사용할 수 있다는 말!!

// Ex)

transform.DOMove( Vector3 to, float duration );

rigidbody.DOMove( Vector3 to, float duration );

material.DOColor( Color color, float duration );

 

DOTween은 기본적으로 기능에 매개변수로 원하는 값과 변하는데 걸리는 시간을 받는다.

위에 예시처럼 DOMove를 사용하면 x, y, z 좌표로 duration 시간동안 이동한다.

 

그리고 트윈에 .From()을 사용하면 즉시 From의 위치로 이동한다.

// Ex)

transform.DOMove( new Vector3(x, y, z), float duration ).From();

rigidbody.DOMove( Vector3(x,y,z),  float duration ).From();

material.DOColor( Color color, float duration ).From();

 

 

[DOTween.To] 

 

DOTween.To( getter, setter, to, float duration )

DOTween.To는 현재(setter) 값에서 설정한(to) 값으로 시간(duration)동안 변경한다.

 

"getter"는 값을 람다를 이용해 트윈으로 반환한다고 한다. 

"setter"는 값을 람다를 이용해 트윈으로 설정한다.

// Ex)

DOTween.To( () => a, x => b = x, value, float duration );

 

 

DOTween.To를 이용하면, 무료버전에서 지원하지 않는 형식(예를 들어 TextMeshPro)을 사용할 수 있다.

저번에 작성한 DOText처럼!

 

[Unity] Text에 타이핑 모션 넣기(DoTween)

전에 튜토리얼을 구현하기 위해 타이핑 모션 넣는 방법을 포스팅 했었다. https://maintaining.tistory.com/entry/Unity-Text%EC%97%90-%ED%83%80%EC%9D%B4%ED%95%91-%EB%AA%A8%EC%85%98-%EB%84%A3%EA%B8%B0 [Unity] Text에 타이핑 모션

maintaining.tistory.com

 

 

 

[DOMove] 

 

DOMove( Vector3 to, float duration)

DOTween 하면 transform.DOMove를 가장 많이 사용할 것 같다.(나는 그랬음 ㅎㅎ)

 

DOMove는 설정한 값(value)으로 시간(duration)동안 이동한다. 

Coroutine을 사용하지 않고 오브젝트를 이동시킬 수 있다! 실제로도 이거 완전 꿀이었다.

// Ex)

    public GameObject cube;

    void Update()
    {
        if(Input.GetMouseButtonDown(0)) 
        {
        	cube.transform.DOMove(new Vector3(5, 0, 0), 2f);
    	}
    }

 

실행결과

 

 

- DOMoveX / DOMoveY/ DOMoveZ

 

대상의 X, Y, Z의 값을 설정한 값으로 이동한다.

 

DOMoveX( float to, float duration, bool snapping )

"snapping"은 true일 경우 모든 값을 정수로 매끄럽게 스냅한다고 한다. 예시와 같이 생략 가능.

// Ex)

    public GameObject cube;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            cube.transform.DOMoveY(5, 2f);
        }
    }

 

실행 결과

 

 

[DOColor] 

 

선택한 UI를 설정한 색으로 변경한다.

이미지와 텍스트 등 UI에 사용 가능하다!

DOColor( Color to, float duration)

 

// Ex)
    
    public Image img;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            img.DOColor(Color.black, 2f);
        }
    }

실행결과

 

 

[DOFade] 

 

선택한 UI의 알파값을 설정한 값으로 시간동안 페이드 한다.

지난 번에 UI요소 깜빡이는 효과를 구현할 때 사용한 기능이다.

 

[Unity] UI 깜빡임 효과 넣기

타이틀 화면을 만들 때가 됐다..휴.. 타이틀은 심플해야 하는 법..! 다른 거 없이 "시작하려면 화면을 터치하세요."라는 문구를 넣으려고 한다. 그래서 작성하는 UI 깜빡임 효과 넣기! 이번에도 DOTw

maintaining.tistory.com

 

이미지와 텍스트 등 UI에 사용 가능하다!

DOFade( float to, flaot duration )

 

 

 

 

[DOText] 

 

텍스트를 설정한 시간동안 출력한다.이것도 지난 번에 타이핑 모션을 구현할 때 사용한 기능이다.

 

[Unity] Text에 타이핑 모션 넣기

개발 중인 게임을 만들던 중 튜토리얼을 만들 때가 됐다..! (귀찮..) 자고로 말풍선은 타이핑 효과가 들어가 있어야지 보는 맛이 있는 법..! 그래서 타이핑 모션 효과를 넣는 방법을 작성하려고 한

maintaining.tistory.com

 

DOText(string to, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambledChars = null)

 

"richTextEnabled"는 true(기본값)면 애니메이션이 적용되는 동안 서식 있는 텍스트가 올바르게 해석되고, 그렇지 않으면 모든 태그가 일반 텍스트로 간주된다고 한다.

무슨 뜻인지 모르겠지만, 생략 가능하다.

"ScrambleMode"는 None(기본값)이 아니면 임의의 애니메이션이 나타나며, None으로 설정하면 규칙적으로 출력된다. 이것도 생략 가능하다.

"scrambledChars"는 ScrambleMode를 Custom으로 설정했을 때 사용할 문자열이다. 생략 가능하다.

 

 

 

 

여기까지 내가 생각하기에 많이 사용하는 DOTween의 기능들을 작성해봤다.

다음에 몇 가지 더 추가해서 포스팅 하려고 한다.

 

 

반응형