프로그래밍/Unity

Unity 생명주기에 관해 알아보자

Lou Park 2022. 3. 19. 11:33

위 그림은 유니티에서 제공하는 생명주기 도식인데, 나같은 입문자들이 보기에는 너무 세세한 정보를 담고 있으므로...중요한것만 뽑아서 정리를 해보려한다.

 

Awake()

Scene이 시작되고, 모든 Monobehavior의 Start()전에 호출된다. Prefab이 초기화되고난 직후다.

|

Start()

첫번째 프레임이 업데이트 되기전에 호출된다. 단, Script의 인스턴스가 활성화 되어있을때만 호출된다. 게임 플레이 중에 Object를 생성한다고해서 Start()가 호출되지 않는다.

|

OnApplicationPause()

게임이 중단되고, 프레임과 프레임 사이에 호출된다. 게임이 중단된 상태를 핸들링하기 위해서 OnApplicationPause이후에 하나의 프레임이 더 있다.

|

FixedUpdate()

Update()보다 대부분 자주 호출된다. 프레임율(Framerate)이 낮으면 Frame하나에도 여러번 호출될 수 있고, 반대로 프레임율이 너무 높으면 프레임과 프레임 사이에도 호출되지 않을 수 있다. 물리 계산, 업데이트는 FixedUpdate 직후에 이루어진다. 프레임율과 관계없이 정확한 간격마다 호출되기 때문에 위치 이동을 FixedUpdate()에서 구현하면 Time.deltaTime을 곱해줄 필요가 없다.

 

Update()

Frame마다 한 번 호출된다.

|

LateUpdate()

Frame마다 한 번 호출되나, Update()이후에 호출된다. 3인칭 카메라에서 자주 사용되는데, Update()에서 캐릭터가 이동을 하면 LateUpdate()에서 카메라를 움직여주는 식이다.

|

OnDestroy()

오브젝트가 존재하는 가장 마지막 프레임 업데이트 이후에 호출된다.  Object.Destroy() 혹은 Scene의 종료에 의해 오브젝트는 파괴된다.

|

OnApplicationQuit()

게임 앱이 꺼질때 호출된다. 에디터에서는 Playmode를 종료할때이다.