본문 바로가기

유니티/기본기

유니티 라이프 사이클 (Life Cycle)

728x90
반응형

흔히들 유니티 라이프 사이클에 대해서 물어보면

Awake->OnEnable(오브젝트 활성화 시)->Start->FixedUpdate->Update . . . .

이런식으로 기본적인 호출 순서에 대해서만 알고들 있기에 유니티 라이프 사이클을 한번 정리해 보았다.

 

큰 분류로는

01. Editor

02. Initialization

03. Physics

04. Input events

05. Game logic

06. Scene rendering

07. Gizmo randering

08. GUI rendering

09. End of frame

10. Pausing

11. Disable/enable

12 Decommissioning

이렇게 12가지로 나뉘게 된다.

 

# Editor

1. Reset

-  에디터에서 제일 처음 스크립트를 초기화하는데 호출한다.

 

# Initialization

1. Awake

- 스크립트가 생성될 때 맨 처음 단 한 번 호출되는 초기화 함수다.

- 스크립트가 비활성화된 상태로 생성되더라도 호출된다.

2. OnEnable

- 스크립트가 활성화 되어 있을 때, 오브젝트가 활성화 될 때마다 호출되는 함수다.

- 즉, 오브젝트를 껐다가 켤때마다 호출된다.

3. Start

- Awake와 OnEnable 이후에 단 한 번 호출되는 시작 함수다.

- Awake와는 호출되는 타이밍이 다르며 스크립트가 활성화가 되어 있어야 호출된다.

- 스크립트의 인스턴스가 활성화되면 첫 번째 프레임의 업데이트 전에 호출된다.

 

# Physics

1. FixedUpdate

- 일정한 주기로 매번 호출되는 Update함수다.

- 프로젝트 셋팅에서 해당 주기를 설정할 수 있으며 물리적인 계산을 위해 사용한다.

2. WaitForFixedUpdate

- FixedUpdate가 호출된 후에 Coroutine 함수에서 yield 명령문을 통해 호출된다.

3. OnTriggerXXX

- 충돌 처리를 위해 호출되는 함수로 Collider의 IsTrigger가 체크되어 있을 때 충돌이 발생하면 호출된다.

- OnTriggerEnter, OnTriggerStay, OnTriggerExit 등이있다.

- OnTriggerEnter는 충돌되었을 때 한번 호출한다.

- OnTriggerStay는 충돌되었을 때부터 충돌에서 빠져나오기 전까지 계속 호출된다.

- OnTriggerExit는 충돌되었다가 충돌에서 빠져나올 때 호출된다.

4. OnCollisionXXX

- 충돌 처리를 위해 호출되는 함수로 Collider의 IsTrigger가 체크되어 있지 않을 때 충돌이 발생하면 호출된다.

- OnCollisionEnter, OnCollisionStay, OnCollisionExit 등이있다.

- OnCollisionEnter는 충돌되었을 때 한번 호출한다.

- OnCollisionStay는 충돌되었을 때부터 충돌에서 빠져나오기 전까지 계속 호출된다.

- OnCollisionExit는 충돌되었다가 충돌에서 빠져나올 때 호출된다.

 

# Input events

1. OnMouseXXX

- 마우스의 입력으로 호출된다.

- OnMouseButtonDown, OnMouseButtonUp, OnMouseButton등이있다.

- OnMouseButtonDown는 마우스 버튼을 눌렀을 때 호출된다.

- OnMouseButtonUp는 마우스 버튼을 눌렀다가 뗏을 때 호출된다.

- OnMouseButton는 마우스 버튼을 누르면 호출된다. (누르고 있으면 지속 호출)

- 각각 int 값으로 파라미터를 넘길 수 있으며 0은 왼쪽, 1은 오른쪽, 2는 휠을 나타낸다.

 

 

# Game logic

1. Update

- 스크립트가 활성화 되어 있을 때 매 프레임마다 호출한다.

- 프레임은 기기의 성능에 따라 좌우되기 때문에 호출 물리계산을 할 때는 FixedUpdate를 사용하거나

코루틴을 이용하는것이 좋다.

2. Yield null

- Update 함수가 모두 호출된 후에 실행된다.

- 코루틴 함수에서 한 프레임 대기할 때 사용된다.

3. yield WaitForSeconds

- Update 함수가 모두 호출 된 후에 지정한 시간만큼 지연 후에 실행된다.

4. yield WWW

- WWW를 이용하여 다운로드 완료 후 실행된다.

5. yield StartCoroutine

- 코루틴을 연결하여 해당 코루틴이 완료될 때까지 대기한다.

6. LateUpdate

- Update 함수 후 프레임마다 한 번씩 호출된다.

 

# Scene rendering

1. OnWillRenderObject

- 카메라에 오브젝트가 표시되면 각 카메라에서 한 번 호출된다.

2. OnPreCull

- 카메라가 씬을 추려내기 전에 호출된다.

- 컬링하여 카메라가 어떤 오브젝트를 표시할 지가 결정되고 컬링이 발생하기 직전에 호출된다.

3. OnBecameInvisible / OnBecameVisible

- 오브젝트가 카메라에 표시되거나 표시되지 않게 되었을 때 호출된다.

4. OnPreRender

- 카메라가 씬의 렌더링을 시작하기 전에 호출된다.

5. OnRenderObject

- 모든 씬 렌더링이 종료된 후에 호출된다.

6. OnPostRender

- 카메라가 씬의 렌더링을 종료한 후에 호출 된다.

7. OnRenderImage

- 화면 렌더링이 완료되고, 화면 이미지 처리가 가능하게 된 후에 호출된다.

 

# Gizmo randering

1. OnDrawGizmos

- 시각화를 위한 씬 뷰에서 기즈모를 그리는 데 사용된다.

 

# GUI rendering

1. OnGUI

- GUI이벤트에 따라 매 프레임마다 여러 차례 호출된다.

- 흔히 우리가 치트키 화면을 그리거나할 때 많이 사용하고 있다.

 

# End of frame

1. yield WaitForEndOfFrame

- 하나의 프레임이 완전히 종료될 때 호출된다.

- 매 프레임마다 Update, 렌더링 등이 끝나게 되면 호출된다.

 

# Pausing

1. OnApplicationPause

- 예를들어 모바일 기기에서 홈버튼을 누르거나 홀드 버튼을 눌렀을 경우 호출된다.

(인자값으로 true, false를 받는다.)

2. OnApplicationFocus

- 예를들어 모바일 기기에서 홈버튼을 누르거나 홀드 버튼을 눌렀을 경우 호출된다.

(해당 앱에서 다른 앱으로 포커싱이 변경되었을 때 호출된다. 인자값으로 true, false를 받는다.

# Disable/enable

1. OnDisable

- 스크립트가 켜져있을 때, 오브젝트가 비활성화 될 때마다 호출된다.

- 즉, 오브젝트가 켜져있다가 꺼버리면 호출된다.

# Decommissioning

1. OnApplicationQuit

- 응용 프로그램 종료 전에 모든 게임 오브젝트에서 호출된다.

- 에디터의 경우 '실행' 버튼을 꺼버리면 호출된다.

2. OnDisable

- 위 사이클에서 설명한것과 동일하다.

- 단지, 앱 종료시 호출되는 시점상 한번 더 표기한 것.

3. OnDestroy

- 오브젝트가 파괴(삭제,제거)될 때 호출된다.

- 정확히는 해당 오브젝트의 마지막 프레임의 업데이트 후에 호출된다.

 

 

 

 

 다람쥐와 포동포동이

 

 

 

 

 

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관

chipmunk-plump-plump.tistory.com

반응형

'유니티 > 기본기' 카테고리의 다른 글

에셋번들 (Asset Bundle)  (0) 2021.02.25
오일러각과 짐벌락 그리고 쿼터니언  (0) 2021.02.09
Unity - RawImage  (2) 2020.10.30
Unity - Image  (0) 2020.10.29
Unity - Graphic RayCaster  (1) 2020.10.28