[SCC] TIL (11)

suhan0304·2024년 8월 30일

SCC - TIL

목록 보기
11/17
post-thumbnail

Date : 2024.08.30


KnifeHit

  • Boss 애니메이션 구현 마무리 작업
  • Boss 패턴 (고민해봐야할 듯?)

자세한 개발 내용은 하단의 개발 로그를 참고하자.

(7) : https://velog.io/@suhan0304/Unity-Knife-Hit-7


NIL

DOTween Animation

간단한 애니메이션을 쉽게 구현하려고 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으로 시퀀스에 추가할 수 있었다.

  1. Append : 시퀀스에 새로운 트윈을 추가하여 애니메이션을 순서대로 실행하도록 구성하는 메서드이다.
  2. AppendCallback : 시퀀스에서 특정 시점에 호출될 콜백 함수를 추가하는 메서드이다. 일반적으로 애니메이션이 완료된 후 또는 특정 시간 간격 후에 실행될 코드를 삽입할 때 사용된다.

Rewind

우리가 DOTween을 사용할 때 실행한 트윈을 되감기위해 Rewind와 PlayBackwards를 주로 사용한다.

DOTween.DORewind(); 
DOTween.DOPlayBackwards(); 

이 때 Rewind와 PlayBackwards의 차이를 잘 알아두자.

  1. Rewind : 애니메이션을 처음 상태로 되돌리는 메서드이다. Rewind는 애니메이션을 거꾸로 재생하여 초기 상태로 되돌리는 것이 아니라, 애니메이션의 진행 상태를 초기 상태로 되돌린다. 애니메이션이 재생되지 않으며, 단순히 현재 상태를 리셋하는 역할을 한다.
  2. PlayBackwards : 애니메이션을 거꾸로 재생하는 메서드이다. 애니메이션이 진행된 역순으로 재생되며, 일반적으로 애니메이션이 종료된 후 그 역과정을 재생할 때 사용된다.

쉽게 말해 실행한 애니메이션을 바로 처음 상태로 리셋시키는 것이 Rewind이고, 애니메이션을 역순으로 재생하면서 원래 상태로 돌아가는 것이 PlayBackwards이다.

Debug.Log

오늘 개발하면서 느낀건데 오류 하나가 2시간 동안 나를 괴롭혔다. 이 오류가 단순히 다른 메소드의 호출 위치가 잘못되면서 일어난 일이었다. 정상적인 순서는 (메서드1) -> 플레이 -> (메서드2) 순이어야 하는데, (메서드2) -> (메서드1) -> 플레이 순으로 작동하고있었다. 그래놓고 "메서드1이 왜 정상작동 안하지?"라고 고민하고 스크립트만 주구장창 수정하고 있었다.

까먹지말고 어떤 메서드나 함수를 실행할 때 로그를 찍어놓는 습관을 기르자. 그러면 실행 순서나, 실행 여부, 오류 위치를 금방금방 파악할 수 있다.

public void method1() {
	Debug.Log("[Script1.cs] method1 - Logic1");
    
	// Logic1

	Debug.Log("[Script1.cs] method1 - Logic1");

	// Logic 2
}

대충 위와 같은 느낌? 현업에서는 어떻게 로그를 찍는지 궁금한데 나중에 한 번 기회되면 알아보자.


profile
Be Honest, Be Harder, Be Stronger

0개의 댓글