내일배움캠프_Unity_6기/TIL_최종프로젝트

TIL : 2025-01-13(월) :: 최종프로젝트 개발 일지(31) - Time.Scale 값을 0으로 설정하고,UI는 동작시키는 메서드

BirdHead 2025. 1. 13. 23:53
using DG.Tweening

Sequence seq = DOTween.Sequence();
seq.SetUpdate(true);
seq.SetUpdate(false);

 

Sequence의 SetUpdate() 메서드를 사용하면 TimeScale 이 0이여도 DoTween 시퀀스에 저장된 애니메이션들은 동작하게 된다.

 

예제)

  private void MakeSquence()
  {
      Time.timeScale = 0;
      Sequence seq = DOTween.Sequence();
      seq.SetUpdate(true);
      seq.Append(gachaImage.transform.DOMoveY(500, 0));
      seq.Append(gachaText.DOFade(0, 0));
      seq.Append(gachaText.DOFade(1, 1));
      seq.Append(gachaText.DOFade(0, 0.5f));
      seq.Append(gachaImage.DOColor(Color.white, 1));
      seq.Append(gachaImage.transform.DOMoveY(-500, 1));
      seq.Append(gachaImage.DOColor(Color.black, 1));
      seq.OnComplete(() =>
      {
          Time.timeScale = 1;
          this.gameObject.SetActive(false);
      });
  }

모든 애니메이션이 동작한 뒤 Time.timeScale을 원복하는 메서드이다.

 

+p.s) DoTween 에셋 기능이 아닌 , Animator의 UpdateMode를 사용하는것도 방법이다.

 

animator.updateMode = AnimatorUpdateMode.UnscaledTime;

 

  • Normal: Time.timeScale에 따라 애니메이션이 재생됩니다.
  • UnscaledTime: Time.timeScale 값에 관계없이 애니메이션이 계속 재생됩니다.
  • AnimatePhysics: 물리 시뮬레이션과 함께 애니메이션이 업데이트됩니다.

3가지를 선언하여 사용하면된다.