본문 바로가기
NOTE/Unity

[Unity] 실행 순서 이벤트 함수 (펌)

by DevAthena 2016. 9. 26.

1. Reset

개체가 처음 연결되었을때 스크립트의 프로퍼티로 초기화하는데 호출, 이 함수는 씬이 시작되면 호출됨 (씬의 각 오브젝트에대해 한번)


2. Awake

항상 Start 함수의 이전 및 프리팹의 인스턴스화 직후에 호출됨


3. OnEnable

오브젝트가 활성화된 경우에만 호출됨, 이 함수는 오브젝트를 활성화 한 직후에 호출된다.

(MonoBehaviour 인스턴스가 생성될때, 예를들어 레벨 로드 또는 스크립트 컴포넌트에 연결된 게임 오브젝트가

 인스턴스화 될때 발생함)


4. Start

스크립트의 인스턴스가 활성화되면 첫 번째 프레임의 업데이트 전에 Start가 호출됩니다. Update함수 호출되기 전에 호출됨


5. OnApplicationPause

일반 프레임 업데이트 사이에서 pause가 탐지된 프레임의 끝에서 호출 됩니다. OnApplicationPause가 호출되면 

추가 프레임이 발행되어, pause 상태를 나타내는 그래픽 인디케이터가 표시 됩니다.

업데이트 순서 게임 로직 인터랙션, 애니메이션, 카메라 위치 등을 추적하는 경우, 각종 이벤트를 사용할 수 있습니다. 

(일반적인 패턴은 Update() 함수 내에서 대부분의 작업을 수행할것이지만....)


6. FixedUpdate

FixedUpdate()는 Update()보다 자주 호출되는 경우가 많습니다.

프레임 속도가 낮은 경우에는 프레임마다 여러 번 호출 할 수 있지만,프레임 속도가 높을 경우 프레임간에 

호출 할 수 없습니다.

FixedUpdate() 직후에 모든 물리적 특성 계산 및 업데이트가 발생합니다.

FixedUpdate()에서 이동 계산을 적용 할 때 Time.deltaTime 값을 곱할 필요는 없습니다.

이것은 프레임 속도와는 독립적으로 FixedUpdate()가 신뢰할 수있는 타이머에서 호출되기 때문 입니다.


7. Update

Update는 프레임마다 한 번씩 호출됩니다. 이것은 프레임의 업데이트에 대한 주요 기능입니다.


8. LateUpdate

LateUpdate()는 Update() 후 프레임마다 한 번씩 호출됩니다.

Update()에서 수행되는 계산이 완료되면 LateUpdate() 함수가 시작 합니다.

LateUpdate()의 일반적인 사용은  3인칭 카메라입니다.

Update()에서 캐릭터를 이동하고 회전시킬 경우 LateUpdate()에서 카메라의 이동과 회전 계산을 수행할 수 있습니다.

이렇게하면 캐릭터가 카메라가 그 위치를 추적하기 전에 완전히 이동합니다.


9. OnPreCull

카메라가 씬을 추려내기 전에 호출됩니다. 컬링(Culling)하여 카메라에 어떤 오브젝트를 표시할 지가 결정됩니다.

OnPreCull은 컬링이 발생하기 직전에 호출됩니다.


10. OnBecameVisible / OnBecameInvisible

오브젝트가 카메라에 표시되거나 표시되지 않게 될 때 호출됩니다.


11. OnWillRenderObject

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


12. OnPreRender

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


13. OnRenderObject

모든 씬 렌더링 종료 후에 호출됩니다. GL 클래스 또는 Graphics.DrawMeshNow을 사용하여 이 시점에 

사용자 지정 지오메트리를 그릴 수 있습니다.


14. OnPostRender

카메라가 씬의 렌더링을 종료한 후 호출됩니다.


15. OnRenderImage

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


16. OnGUI

GUI 이벤트에 따라 프레임마다 여러 차례 호출됩니다.

레이아웃 및 리페인트 이벤트가 먼저 처리된 후 레이아웃 및 키보드 / 마우스 이벤트가 각 입력 이벤트에 대해 처리됩니다.


17. OnDrawGizmos

시각화를 위한 씬 뷰에서 기즈모(Gizmos)를 그리는 데 사용됩니다.


18. 코루틴

일반적인 코루틴 업데이트는 Update 함수가 반환된 후 수행됩니다.

코루틴은 YieldInstruction이 종료할 때까지 그 실행(생성)을 중지할 수 있는 함수입니다.

코루틴의 다른 사용법은 아래와 같습니다.

  - yield : 코루틴은 다음 프레임에서 모든 Update 함수가 호출된 후에 속행합니다.

  - yield WaitForSeconds : 프레임에 대한 모든 Update 함수가 호출된 후 지정된 시간 지연 후에 속행합니다.

  - yield WaitForFixedUpdate : 모든 스크립트에서 모든 FixedUpdate 호출 후 속행합니다.

  - yield WWW :  WWW 다운로드 완료 후 속행합니다.

  - yield StartCoroutine : 코루틴을 연결하고 MyFunc 코루틴이 먼저 완료될 때까지 기다립니다.

참고 :  http://www.slideshare.net/MrDustinLee/ss-33346625?next_slideshow=1


19. OnDestroy

오브젝트 생존기간의 마지막 프레임의 프레임 업데이트 후 OnDestroy가 호출됩니다.(오브젝트는 Object.Destroy 또는 

씬 종료시에 파기됩니다)


20. OnApplicationQuit

이 함수는 응용 프로그램 종료 전에 모든 게임 오브젝트에서 호출됩니다.

에디터에서는 사용자가 재생 모드를 중지하면 호출됩니다.

웹 플레이어에서는 웹 뷰가 닫힐 때 호출됩니다.


21. OnDisable

이 함수는 동작이 비활성화 될 때 호출됩니다.






- Awake -


-스크립트가 실행될 때 한 번만 호출되는 함수이다.


-주로 게임의 상태 값 또는 변수의 초기화에 사용한다.


-start 함수가 호출되기 전에 먼저 호출된다.


-스크립트가 비활성화돼 있어도 실행된다.


/*코루틴 사용 불가*/


- Start -


-Update 함수가 호출되기 전에 한번만 호출된다.


-스크립트가 활성화돼 있어야 실행된다.


-다른 스크립트의 모든 Awake가 모두 실행된 이후에 실행된다.


- Update -


-프레임마다 호출되는 함수로 주로 게임의 핵심 로직을 작성한다.


-스크립트가 활성화돼 있어야 실행된다.


-코루틴 사용 불가


- LateUpdate -


-모든 Update함수가 호출되고 나서 한 번씩 호출된다.


-순차적으로 실행해야 하는 로직에 사용한다.


-카메라 이동 로직에 주로 사용하는 함수다.


-스크립트가 활성화돼 있어야 실행된다.


- FixedUpdate -


-주로 물리 엔진을 사용하는 경우에 일정 시간 간격으로 힘을 가할 때 사용하는 함수다.


-스크립트가 활성화돼 있어야 실행된다.


- OnEnable -


-게임오브젝트 또는 스크립트가 활성화됐을 때 호출된다.


-이벤트 연결 시 사용한다.


-코루틴 사용 불가


- OnDisable -


-게임오브젝트 또는 스크립트가 비활성화됐을 때 호출된다.


-이벤트 연결을 종료할 때 사용한다.


-코루틴 사용 불가


- OnGUI -


-레거시 GUI 관련 함수를 사용할 때 사용한다