2015년 4월 7일 화요일

Update(), FixedUpdate(), LateUpdate()의 차이





Update() - 매 프레임마다 한번씩 호출되는 함수. 프레임단위로 호출되기 때문에 이전 프레임과의 시간차가 일정하지 않으므로 TIme.deltaTime을 사용하여 이전 프레임과의 시간차를 확인하여 사용해야한다.


FixedUpdate() - 매 프레임별로 호출되지만 시간차가 부정확한 Update와는 달리 일정한 시간 간격차를 두고 한번씩 호출되는 함수. Framerate가 낮으면 한 프레임에 여러번 불려질 수 있으며 Framerate가 높으면 한 프레임에 호출이 없을수도 있다. 이러한 Framerate와 독립적인 타이머에 의한 호출때문에 Time.deltaTime이 많이 필요한 모든 물리적 연산과 업데이트는 FixedUpdate()가 호출이 완료된 다음 이루어진다.
(Framerate와 독립적이기 때문에 FixedUpdate()메소드 안에선 Time.deltaTime을 사용할 필요가 없다.)


LateUpdate() - Update와 마찬가지로 매 프레임마다 한번씩 호출되는 함수이지만, Update가 호출이 완료된 이후에 호출되는 특징을 갖고있다.
주로 Update()에서 캐릭터를 움직인다음, LateUpdate()에서 카메라를 이동시킨다거나 하는 용도로 사용한다.
(LateUpdate()에서 카메라를 이동시키는 이유는 Update()에서 캐릭터가 이동했다고 확실하게 신뢰할수 있기 때문.)