Unity - Update

김도현·2023년 11월 21일
0

TIL

목록 보기
65/76

Unity의 Update는 다양한 기능을 수행하며 다양한 종류가 있습니다.

Update란?

정기 업데이트 이벤트로 매 프레임마다 호출되며 게임의 로직, 상호작용, 애니메이션, 카메라 포지션의 트랙을 유지할 때 사용합니다. 일반적인 패턴은 Update함수에 대부분의 작업을 수행할 수 있습니다.

종류 및 기능

1) Update()

스크립트가 활성화(enabled) 상태일 때, 매 프레임마다 호출됩니다.
주기가 일정하지 않아 물리효과가 적용되지 않은 오브젝트의 움직임이나 단순한 타이머, 키 입력을 받을 때 사용됩니다.

2) FixedUpdate()

고정된 시간마다 호출되며 컴퓨터의 성능과 상관없이 호출됩니다.(물리 시뮬레이션 주기에 따라 호출)

물리 계산을 위한 프레임 속도 독립적 MonoBehaviour.FixedUpdate

프레임 기반으로 호출되는 Update와 달리 Fixed Timestep에 설정된 값에 따라 일정한 간격(Default : 0.02sec)으로 호출된다! 물리 효과가 적용된(Rigidbody) 오브젝트를 조정할 때 사용된다.

  • Update는 불규칙한 호출임으로 물리충돌 검사로는 상대적으로 부적합하다.

이 값을 사용하는 방법 Time.fixedDeltaTime

스크립트 내에서 원하는 값으로 설정하여 변경하거나 해당 위치로 이동하여 설정하세요.Edit > Settings > Time > Fixed TimestepFixed

3) LateUpdate()

모든 Update()가 호출된 후에 호출되며 다른 스크립트나 컴포넌트의 업데이트 이후에 추가 작업을 수행하는 데 사용됩니다. 주로 카메라 이동, 렌더링 등의 작업에 사용됩니다.(이미 처리가 완료된 정보를 통합하여 눈에 보여주기 위해서)

Behavior가 활성화된 경우 LateUpdate는 매 프레임마다 호출됩니다.

주의할점

프레임이 컴퓨터의 성능에 따라 달라지기 때문에 일정하지 않습니다.
그렇기에 Update에서 물리계산 및 기타 계산을 할 경우 컴퓨터의 성능에 따라 차이가 벌어질 수 있기에 계산 같은 경우에는 피하는 것이 좋습니다.
하지만 그래도 사용 될 경우 Time.deltaTime을 곱해서 값을 맞쳐줘야 됩니다.

  • 1분에 60프레임을 호출한 경우 1(초) * 60 = 60
  • 1분에 30프레임을 호출한 경우 2(초) * 30 = 60

0개의 댓글