
DOTween에서는 DoMove, DoJump 같은 이동, 애니메이션 효과를 위한 메서드 뿐만 아니라 이를 보조할 다른 메서드들도 제공한다.
대표적으로 OnStart, OnPlay, OnComplete, OnKill이 있다.
private Tween MoveToPoint(Vector3 p_pointPosition)
{
return transform.DOMove(p_pointPosition, _moveDuration)
.OnStart(MoveStart)
.OnPlay(MovePlay)
.OnComplete(MoveEnd)
.OnKill(MoveKill);
}
private void MoveStart()
{
Debug.Log("Move Start");
}
private void MovePlay()
{
Debug.Log("Move Play");
}
private void MoveEnd()
{
Debug.Log("Move End");
}
private void MoveKill()
{
Debug.Log("Move Kill");
}
위 예시 메서드인 MoveToPoint를 호출하면 디버그 로그에 다음과 같이 찍힌다.

0. OnStart
트윈이 시작될 때 호출된다. 기본적으로 트윈이 처음 시작할 때만 호출된다.
1. OnPlay
트윈이 '재생'될 때 호출된다. 일반적으로 OnStart와 같이 호출된다.
기본적으로는 트윈을 중간에 멈췄다가 재생을 한다면 그때 OnPlay가 다시 호출될 수 있다.
2. OnComplete
트윈이 완전히 끝났을 때 호출된다.
3. OnKill
트윈이 Kill() 됐을 때 호출된다. Kill은 실행중인 트윈을 중단하는 메서드이다.
DOTween에선 기본 설정으로 끝난 Tween에 대해 Kill하기에 위와 같이 디버그 메세지가 출력됐다.
private void MoveObject()
{
Sequence sequence = DOTween.Sequence()
.OnStart(() => {
Debug.Log("Sequence Start");
})
.OnComplete(() => {
Debug.Log("Sequence End");
});
sequence.Append(MoveToPoint(_wayPointsPositions[0]));
sequence.Append(MoveToPoint(_wayPointsPositions[1]));
}
시퀀스에도 해당 메서드들을 이용할 수 있다.
위와 같은 시퀀스로 호출할 경우 다음과 같이 출력된다.

Sequence Start후, 각각 Tween의 메서드들이 호출되고, Sequence가 끝난 뒤에 Kill에 대한 메서드가 호출되는 것을 확인할 수 있었다.
DOTween에서 사용되는 이동 관련 메서드들은 Tween을 반환하는 형태라고 Sequence를 다룰 때 언급한 적이 있었다.
이를 통해 현재 재생 중인 Tween을 캐싱하는 것 또한 가능하다.
private Tween _currentTween
_currentTween = transform.DOMove(p_pointPosition, _moveDuration);
이렇게 캐싱한 트윈은 특정 상황에서 제어할 때 유용하게 사용될 수 있다.
_currentTween.Kill();
위의 경우에는 해당 트윈을 강제로 종료하게 한다. 이렇게 종료된 트윈은 OnComplete가 붙었더라도 호출되지 않는다.
'TIL' 카테고리의 다른 글
| DOTween에서, 오브젝트의 속도값에 따라 이동하도록 하기 (0) | 2025.04.25 |
|---|---|
| 몬스터 체력 감지 리팩토링 및 프로파일러를 통한 성능개선 체크 (0) | 2025.04.23 |
| DOTween의 Sequence (0) | 2025.04.03 |
| DOTween의 기본 메서드 (0) | 2025.04.02 |
| Git 클라이언트 'Fork' (0) | 2025.04.01 |