Unity생명주기, Update문 3개 알아보기

김보근·2024년 9월 11일

Unity

목록 보기
82/113

TIL: Unity 생명주기와 Update 함수의 차이

Unity 생명주기

유니티에서 오브젝트가 생성되고 소멸될 때까지, 특정 시점마다 자동으로 호출되는 메서드들이 있다. 각각의 타이밍이 달라 적절히 사용해야 원하는 결과를 얻을 수 있다.
스크립트의 생명주기는 크게 3단계로 나눌수 있다.
시작단계(생성 및 초기화) : Awake, OnEnable, Start
업데이트 단계 : FixedUpdate, LateUpdate, Ontrigger, OnCollision
종료 단계 (비활성화 및 삭제) : OnApplicationQuit, OnDisable, Ondestroy

Awake():

오브젝트가 활성화될 때 가장 먼저 호출된다.
의존성 초기화에 좋다. 특히 다른 스크립트나 컴포넌트가 필요할 때 먼저 호출된다는 점에서 유용하다.
스크립트가 비활성화 상태여도 실행되기 때문에 로직 실행 순서를 잡을 때 고려해야 한다.

OnEnable()

오브젝트가 활성화될 때 호출됩니다. 스크립트가 비활성화되었다가 다시 활성화될 때도 이 메서드가 호출 된다.
게임 중 특정 상황에서 오브젝트를 활성화하고 싶을 때, 그 초기 설정을 여기에서 할 수 있다.

Start():

Awake()가 호출된 후, 오브젝트가 활성화될 때 한 번만 실행된다.
초기화 로직을 여기에 넣으면 된다. 자주 쓰는 패턴으로는 리소스 로드, 게임 오브젝트의 초기 위치 설정 등이 있다.

Update():

프레임마다 반복적으로 호출되는 함수다. 주로 게임에서 실시간으로 변하는 동작을 처리하는 곳.
예를 들어, 플레이어 입력 처리, 적의 행동 업데이트 등을 여기에 넣는다.

OnApplicationQuit()

애플리케이션이 종료될 때 호출된다.
게임이 종료되기 직전 호출되며, 이때 마지막 데이터를 저장하거나 네트워크 연결을 종료하는 등의 작업을 처리하기에 적합하다.

OnDisable()

오브젝트가 비활성화될 때 호출된다.
예를 들어, 게임 도중 특정 오브젝트를 사용하지 않게 되거나 꺼지게 되면 이 메서드가 호출된다.
보통 비활성화 시점에서 정리 작업이나, 상태를 저장할 때 유용하다.

OnDestroy()

오브젝트가 파괴될 때 호출된다.
씬이 전환되거나 수동으로 오브젝트를 Destroy() 호출을 통해 삭제할 때도 이 메서드가 실행된다.
이 시점에서는 리소스를 해제하거나, 메모리를 정리하는 등의 작업을 수행할 수 있다. 마지막으로 파일 저장 등의 정리 작업에도 사용된다.

2. Update 관련 함수 3가지

Unity에서 매 프레임마다 동작을 업데이트할 때, Update()뿐만 아니라 상황에 맞는 함수를 선택해서 사용하는 것이 중요하다. 세 가지가 어떻게 다른지 정리해본다.

Update():

프레임마다 한 번씩 호출된다. 가장 기본적인 업데이트 함수로, 게임 로직 대부분을 여기에 넣게 된다.
프레임 속도에 따라 호출 빈도가 달라질 수 있기 때문에, Time.deltaTime을 사용해 프레임에 무관하게 일관된 움직임을 구현해야 한다는 점에 유의해야 한다.

FixedUpdate():

고정된 시간 간격으로 호출된다. 물리 연산이 여기에 포함된다.
프레임 속도와 무관하게 일정한 주기로 실행되기 때문에, Rigidbody나 물리 연산 관련 코드는 여기에서 처리하는 게 적절하다.

LateUpdate():

모든 Update()가 끝난 후에 호출된다. 주로 후처리가 필요한 작업에 사용된다.
대표적인 예로는 캐릭터가 이동한 후에 카메라 위치를 조정하는 로직을 여기에 넣는 방식이 있다.

결론

이렇게 Unity의 생명주기와 Update 함수들을 정리하면서, 상황에 맞게 적절한 함수들을 사용하는 것이 중요하다는 것을 다시 한 번 느꼈다.
이번프로젝트에서 FixedUpdate()를 사용하고있지만 기억이 가물가물해서 다시 알아보는 시간을 가지게 되었다.

profile
게임개발자꿈나무

0개의 댓글