자세한 개발 내용은 하단의 개발 로그를 참고하자.
(7) : https://velog.io/@suhan0304/Unity-Knife-Hit-7
간단한 애니메이션을 쉽게 구현하려고 DOTween Animation 컴포넌트를 사용했다. ID를 사용해서 한번에 Play하거나 Kill하는 등, 스크립트에서도 쉽게 사용할 수 있다. 시퀀스에 이런 DOTween Animation 컴포넌트를 컨트롤하는 명령어를 넣을 수 있다! 시퀀스를 넣는 것은 일련의 애니메이션을 순차적으로 인터벌을 추가하면서 실행하려고 하는건데 개발 중에 DOTween Animation 컴포넌트 간에 Interval를 주고 싶어졌고 이를 위해 시퀀스에 아래와 같이 추가해주었다.
[Button("OnBossDestroy")]
public void OnBossDestroy() {
Debug.Log("[UIMagner.cs] OnBossDestroy");
DOTween.Sequence()
.AppendCallback(() => {
stageIconBoss.GetComponent<DOTweenAnimation>().DOPlayBackwards();
})
.AppendInterval(0.5f)
.AppendCallback(() => {
stageIconsContainer.GetComponent<DOTweenAnimation>().DOPlayBackwards();
});
}
AppendCallback으로 시퀀스에 추가할 수 있었다.
Append : 시퀀스에 새로운 트윈을 추가하여 애니메이션을 순서대로 실행하도록 구성하는 메서드이다.AppendCallback : 시퀀스에서 특정 시점에 호출될 콜백 함수를 추가하는 메서드이다. 일반적으로 애니메이션이 완료된 후 또는 특정 시간 간격 후에 실행될 코드를 삽입할 때 사용된다.우리가 DOTween을 사용할 때 실행한 트윈을 되감기위해 Rewind와 PlayBackwards를 주로 사용한다.
DOTween.DORewind();
DOTween.DOPlayBackwards();
이 때 Rewind와 PlayBackwards의 차이를 잘 알아두자.
Rewind : 애니메이션을 처음 상태로 되돌리는 메서드이다. Rewind는 애니메이션을 거꾸로 재생하여 초기 상태로 되돌리는 것이 아니라, 애니메이션의 진행 상태를 초기 상태로 되돌린다. 애니메이션이 재생되지 않으며, 단순히 현재 상태를 리셋하는 역할을 한다.PlayBackwards : 애니메이션을 거꾸로 재생하는 메서드이다. 애니메이션이 진행된 역순으로 재생되며, 일반적으로 애니메이션이 종료된 후 그 역과정을 재생할 때 사용된다.쉽게 말해 실행한 애니메이션을 바로 처음 상태로 리셋시키는 것이
Rewind이고, 애니메이션을 역순으로 재생하면서 원래 상태로 돌아가는 것이PlayBackwards이다.
오늘 개발하면서 느낀건데 오류 하나가 2시간 동안 나를 괴롭혔다. 이 오류가 단순히 다른 메소드의 호출 위치가 잘못되면서 일어난 일이었다. 정상적인 순서는 (메서드1) -> 플레이 -> (메서드2) 순이어야 하는데, (메서드2) -> (메서드1) -> 플레이 순으로 작동하고있었다. 그래놓고 "메서드1이 왜 정상작동 안하지?"라고 고민하고 스크립트만 주구장창 수정하고 있었다.
까먹지말고 어떤 메서드나 함수를 실행할 때 로그를 찍어놓는 습관을 기르자. 그러면 실행 순서나, 실행 여부, 오류 위치를 금방금방 파악할 수 있다.
public void method1() {
Debug.Log("[Script1.cs] method1 - Logic1");
// Logic1
Debug.Log("[Script1.cs] method1 - Logic1");
// Logic 2
}
대충 위와 같은 느낌? 현업에서는 어떻게 로그를 찍는지 궁금한데 나중에 한 번 기회되면 알아보자.