[Unity] 31. Unity 생명주기(Unity Life Cycle)

Connected Brain·2025년 4월 28일

면접 질문 대비

목록 보기
31/60

Unity 생명주기(Unity Life Cycle)에 대해서 설명해주세요.

한 줄 요약

Unity 생명주기 : Monobehaviour 클래스를 상속받은 클래스에서 가지는 이벤트 함수의 실행 순서 및 주기
(각각의 이벤트 함수의 호출 순서와 호출 시점이 중요)

  • Unity 생명주기(Unity Life Cycle)란 Unity에서 기본 제공되는 이벤트 함수들의 실행 순서를 말한다.
  • 아래의 다이어그램은 각각의 이벤트 함수들이 실행되는 순서와 어떤 처리 과정에서 호출되는지 표시한 것이다.
    (출처 : Unity 공식문서 - 이벤트 함수의 실행 순서)

처음 Scene이 로드되는 시점

Awake()

  • Start 함수보다 이전에 실행된다.
  • 시작시 오브젝트가 비활성화 중일 경우 실행되지 않음

OnEnable()

  • 오브젝트가 활성화 상태일 경우 호출
  • 시작시 뿐만 아니라 활성화 될 때마다 호출됨

초기화 시점

Start()

  • 인스턴스가 활성화된 이후 첫번째 프레임이 실행되기 이전에 실행됨
  • 인스턴스의 초기화를 위해 사용

업데이트 순서

Update()

  • 가장 기본적인 업데이트 함수
  • 매 프레임마다 1번씩 실행됨

FixedUpdate()

  • 기기마다 다른 프레임 속도로 인해 물리 현상 등에서 의도하지 않은 연산이 발생하는 것을 방지하기 위해 정해진 프레임으로 실행되는 업데이트 함수
  • 기기 상태에 따라 실행속도가 정해지므로 Update 이전에 실행될 수도, 프레임 사이에 실행되지 않을 수도 있음
  • 모든 물리효과는 FixedUpdate 후 즉시 발생(Time.deltaTime을 곱할 필요 없음)

LateUpdate()

  • Update가 끝난 후 프레임마다 1번씩 실행
  • 주로 카메라의 추적 움직임을 제어할 때 사용
  • 모든 움직임이 끝난 후에 카메라가 추적해야 올바른 위치를 비출 수 있기때문에 LateUpdate()에서 카메라 추적을 실행

렌더링

  • 업데이트까지 마친 후에는 화면 렌더링 과정을 거친다.
  • 렌더링을 마친 이후 시점이 WaitForEndOfFrame() 시점이 된다.

오브젝트 파괴

OnDestroy()

  • 프레임 내에서의 모든 호출(초기화, 업데이트, 렌더링)이 끝난 후, 오브젝트 파괴 시 실행

Scene 종료

OnDisable()

  • 시작시 오브젝트가 비활성화 상태이거나, 진행 중에 비활성화되었을 때 실행

OnApplicationQuit()

  • 에디터 상에서는 플레이가 종료되었을 때 실행
  • 애플리케이션 종료 전 모든 오브젝트에서 실행

0개의 댓글