유니티,Unity,C#

Unity/C# - Time 함수 관련 정리

기상사건 2022. 11. 29. 19:59
728x90

deltaTime

  • 현재 프레임에서 다음 프레임까지의 시간 간격. 프레임간의 시간 간격이다.
  • 우리집 컴퓨터가 60Fps이면 대략 1/60인 셈. 240Fps이라고 할시에는 1/240이 되는것이다!
  • 혹여나 ESC버튼을 만들어서 게임을 멈췄다고 해도 deltaTime은 계속 유지가 된다!
  • update같이 매Fps마다 실행되는 함수 안에서 시간 간격을 고려하여 Time.deltaTime을 곱해주면 보정할 수 있다.
    • 1초에 3m 가게 움직이고 싶은데 1초에 60번 깜빡이는 60Fps 컴퓨터라면 update함수 내에서 3m * Time.deltaTime 해주면 된다.
    • 매 프레임마다 3m * Time.deltaTime씩 움직여 최종적으로 1초에 3m 움직이게 되는것이다!

time

  • 게임 시작 후 (Start 함수 실행 후) 현재까지의 경과 시간(float 초 단위)이다.

timeScale

  • Time.timeScale을 통해 시간이 흘러가는 속도를 변경한다면 Time.fixedDeltaTime도 그에 맞게 변경해줄 것을 권장한다.
  • Time.fixedDeltaTime = 0.02f * Time.timeScale
  • Time.timeScale이 2.0f이면 디폴트에 비해 두배로 시간이 빨리 흘러간다는 의미고 0.0f면 시간이 아예 흐르지 않고 정지 상태라는 것을 의미한다.
  • (Time.timeScale = 0f ) ==> 0 배속. 즉 시간을 멈춘다. Time.deltaTime이 0 이 된다.
    • Time.deltaTime, Time.TimeScale에 의존하는 모든 것들이 멈추게 된다.
      • 코루틴 함수(WaitForSeconds) 멈춘다. 반면 WaitForSeondsRealTIme은 멈추지 않는다.
      • Update 함수는 멈추지 않는다. 반면 FixedUpdate 함수는 멈춘다. Update함수는 실시간으로 받는거라면 FixedUpdate함수는 고정된 값으로 받아오는것이다!

 

fixedDeltaTime

  • FixedUpdate() 함수가 실행되는 그 사이의 시간. 다음 FixedUpdate() 함수가 실행되기까지의 시간이다.
  • FixedUpdate() 함수는 디폴트로 1/50초인 0.02초를 주기로 실행되기 때문에 디폴트론 Time.fixedDeltaTime 값은 0.02이다.
  • FixedUpdate() 함수 안에서 사용할 때 Time.fixedDeltaTime가 아닌 그냥 Time.deltaTime 를 사용할 것을 권장한다.
    • 자동으로 Time.deltaTime이 FixedUpdate() 함수 안에서 쓰이면 알아서 Time.fixedDeltaTime 으로 리턴하기 때문이다.
      • Time.deltaTime은 알아서 Update() 함수에서는 Frame간의 사잇 시간으로서 동작하고 FixedUpdate() 함수 안에서 쓰이면 알아서 고정된 프레임인 Time.fixedDeltaTime (0.02초) 으로 쓰인다.
728x90