<시간 및 프레임 속도 관리>

2023. 7. 16. 23:18·개발툴/Unity
시간 기반 액션을 다룰때 주의할 점 : 게임의 프레임 속도는 일정하지 않고,
Update()의 콜 사이의 시간 간격은 일정하지 않다.
이를 해결하기 위해서는 Time.deltaTime에서 읽어오는 프레임 시간에 맞춰서 스케일링 한다.

고정 타임스텝(Fixed Timestep)

  • Unity의 물리 시스템은 고정 타임스텝으로 작동함
  • 물리 업데이트를 시작할때 마지막 물리 업데이트가 끝난 시점에 고정 타임스텝 값을 추가하여 알람을 설정하고, 해당 알람이 꺼질 때까지 물리 시스템에서 계산을 수행함
  • 고정 타임 스텝은 타임 관리자에서 변경 가능

• 낮으면 물리 업데이트가 자주 일어나지만, CPU로드 비용이 커진다.

  • Time.fixedDeltaTime을 사용해서 읽을 수 있다.
  • 단점 : 고정 타임 스텝은 물리 시뮬레이션을 정확히 유지하게 하지만, 물리계산이 많이 사용되고, 프레임 속도가 낮아질 수록 문제를 일으킬 수 있다.
  • 단점 : 프로세싱할 것이 많다면 하나의 프레임 동한 여러번의 물리 이벤트가 일어날 수 있고, 그렇게 되면 프레임 시간, 오브젝트 포지션, 기타 프로퍼티는 프레임 시작 시점에 고정되기 때문에 물리가 더 자주 업데이트 되면서 그래픽과의 싱크가 어긋날 수 있다 -> 이럴때 사용하는게 최대 허용 타임 스텝

최대 허용 타임스텝(Maximum Allowed Timestep)

  • 물리 시간을 늦추어 프레임과의 싱크를 맞추는 옵션
  • 주어진 프레임 업데이트 동안 물리 프로세싱에 사용되는 시간과 FixedUpdate() 호출 수에 제한을 둔다.
  • 프레임 업데이트 처리가 설정한 최대 물리 처리 시간보다 오래 걸린다면 물리 엔진은 시간을 멈춰서 프레임 프로세싱이 따라잡을때까지 기다린다.
  • 물리 계산이 느리게 실행되지만, 게임 상에서는 눈에 잘 띄지 않으며 성능을 위해 감수할 만하다.

시간 스케일(Time Scale)

  • 시간 스케일을 사용하면 게임시간이 현실 시간에 대비해서 흘러가는 속도 조절 가능
  • 값이 0이면 시간이 멈추고, 2이면 유니티에서 시간이 2배의 속도로 흘러간다.
  • 실제로 느리게 실행되는 것이 아니라, Time.deltaTime과 Time.fixedDeltaTime을 통해 전해지는 타임 스텝만을 변경한다.
    • Update() 함수는 더 자주 호출되지만, deltaTime 스텝은 줄어든다.
  • 다른 스크립트 함수는 시간 스케일의 영향을 바지 않는다.
    • ex) GUI 함수는 정상적으로 동작한다.

캡처 프레임 속도(Capture Framerate)

  • 게임 플레이를 녹화하는 것은 게임 프레임 속도를 저하시킨다.
  • 캡처 프레임 속도 프로퍼티를 사용하면 해결 가능

'개발툴 > Unity' 카테고리의 다른 글

IL2CPP  (0) 2023.09.30
Null 레퍼런스 예외 해결방법  (0) 2023.07.28
FixedUpdate의 고정된 시간 간격으로 인해 Update와 FixedUpdate의 호출 빈도가 달라지면 성능 문제가 일어나지 않는가?  (0) 2023.07.11
FixedUpdate는 프레임에 영향을 받지 않는가?  (0) 2023.07.11
<이벤트 함수>  (0) 2023.07.11
'개발툴/Unity' 카테고리의 다른 글
  • IL2CPP
  • Null 레퍼런스 예외 해결방법
  • FixedUpdate의 고정된 시간 간격으로 인해 Update와 FixedUpdate의 호출 빈도가 달라지면 성능 문제가 일어나지 않는가?
  • FixedUpdate는 프레임에 영향을 받지 않는가?
가든_
가든_
  • 가든_
    Code Garden
    가든_
  • 전체
    오늘
    어제
    • 글 목록 (60)
      • 프로그래밍 언어 (11)
        • JAVA (0)
        • C++ (2)
        • C# (9)
      • 개발툴 (24)
        • Visual Studio (0)
        • Visual Studio Code (1)
        • Eclipse (1)
        • Unity (19)
        • Unreal (0)
        • Spring (1)
        • SpringBoot (0)
        • Vue (2)
      • 디자인 패턴 (6)
      • 백엔드 (4)
        • MySQL (1)
        • Servlet (3)
      • 프론트엔드 (4)
        • HTML (3)
        • CSS (0)
        • Javascript (1)
      • 알고리즘 (10)
        • 공식 (3)
        • 백준 (6)
        • SW Expert Academy (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스택
    런타임 상수
    Proxy 패턴
    컴파일 상수
    chatGPT
    FixedUpdate
    12738
    행동 UML 다이어그램
    구조패턴
    Unity
    DI
    SetTile
    클래스 어댑터
    Adapter 패턴
    구조적 UML 다이어그램
    Factory 패턴
    ()=>
    Java
    MVC
    Abstract Factory 패턴
    상태공간트리
    UniRX
    오브젝터 어댑터
    다이어그램 그리기
    Adaptee
    Reflex
    c#
    swea2112
    HTML
    RDBM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
가든_
<시간 및 프레임 속도 관리>
상단으로

티스토리툴바