|
유니티C#에는 기본적으로 제공하는 기본함수, 시점함수, 일반함수가 있습니다.
이중에 시점함수는 특정 시점에 자동으로 실행되는 함수입니다.
시점함수의 그림과 같이 많~~이 있습니다.
이중에서 제일 자주 쓰는 함수는 아래와 같습니다.
start(), Update(), FixedUpdate(), OnEnable(), OnDisable(),
OnTriggerEnter(), OnTriggerStay(), OnTriggerExit()
스크립트 라이프 사이클 플로우차트(Script Lifecycle Flowchart)
Editor |
|
스크립트가 연결되거나 재설정 될 때 Editor에서 reset이 호출됩니다. |
|
Reset() |
• Reset은 개체가 처음 연결되었을 때 스크립트의 프로퍼티로 초기화하는 데 호출됩니다. Reset 명령을 실행했을 때도 마찬가지입니다. |
|
|
Initialization |
|
Awake() |
• 이 함수는 항상 Start 함수의 이전 및 프리팹의 인스턴스화 직후에 호출됩니다. • 만약 게임 오브젝트가 시작할 때 무효인 경우, 활성화되거나 연결된 하나의 스크립트 함수가 호출될 때까지, Awake는 호출되지 않습니다. |
OnEnable() |
• 이 Script가 부착된 오브젝트가 활성화되는(켜지는)순간마다, 실행 구문안의 내용을 한 번씩 실행시킨다. |
Start() |
• 이 Script가 시작되는 순간, 단 한 번 실행합니다. • 구문 안의 내용을 한 번씩 실행시킨다. |
|
|
Physics |
|
FixedUpdate() |
• Fixed Timestep에 설정된 값에 따라 일정한 간격으로 호출됩니다. • 물리 효과가 적용된(Rigidbody) 오브젝트를 조정할 때 사용됩니다 • Update는 불규칙한 호출임으로 물리엔진 충돌검사 등이 제대로 안될 수 있다 • 고정 된 시간 간격이 실제 프레임 업데이트 시간보다 작으면 물리주기가 프레임 당 두 번 이상 발생할 수 있습니다. • 고정 된 시간 간격이 실제 프레임 업데이트 시간보다 프레임 속도가 높을 경우 프레임간에 호출 되지않고 넘길 수 있씁니다. • FixedUpdate() 직후에 모든 물리적 특성 계산 및 업데이트가 발생합니다. • 프레임 속도와는 독립적으로 FixedUpdate()가 타이머에서 호출되기 때문에 이동 계산을 적용 할 때 Time.deltaTime 값을 곱할 필요는 없습니다. |
Yield WaitForFixedUpdate |
• Fixed Timestep에 설정된 값에 따라 일정한 간격으로 호출함. |
Internal physics update |
|
OnTriggerEnter() |
• Trigger 속성의 충돌체가 특정 오브젝트와 부딪친 순간, 실행 구문안의 내용을 한 번씩 실행시킨다. |
OnTriggerStay() |
• Trigger 속성의 충돌체의 경우 충돌체를 가진 오브젝트가 계속 겹쳐있는동안, 매 프레임마다 실행 구문 안의 내용을 한 번씩 실행시킨다. |
OnTriggerExit() |
• Trigger 속성의 충돌체의 경우 자신으로부터 특정 오브젝트가 자신의 충돌영역을 벗어나는 순간, 실행 구문 안의 내용을 한 번씩 실행시킨다. |
OnCollisionEnter |
• collision 속성의 충돌체가 특정 오브젝트와 부딪친 순간, 실행 구문안의 내용을 한 번씩 실행시킨다. |
OnCollisionStay |
• collision 속성의 충돌체의 경우 충돌체를 가진 오브젝트가 계속 겹쳐있는동안, 매 프레임마다 실행 구문 안의 내용을 한 번씩 실행시킨다. |
OnCollisionExit |
• collision 속성의 충돌체의 경우 자신으로부터 특정 오브젝트가 자신의 충돌영역을 벗어나는 순간, 실행 구문 안의 내용을 한 번씩 실행시킨다. |
|
|
Input events |
|
OnMouseOver() |
• 마우스가 객체 위에있는 동안 매 프레임마다 호출 |
OnMouseEnter() |
• 마우스가 객체에 들어가는 순간 호출 |
OnMouseDown() |
• 마우스가 객체를 왼쪽마우스 버튼을 누르는 순간 호출 |
OnMouseUp() |
• 마우스가 객체를 왼쪽마우스 버튼을 올리는 순간 호출 |
OnMouseExit() |
• 마우스가 객체에 나오는 순간 호출 |
OnMouseDrag() |
• 마우스로 객체를 드래그하면 발동 |
|
|
Game logic |
|
Update() |
• 이 Script가 활성화되어있는 동안, 매프레임마다. 실행 구문 안의 내용을 한 번씩 실행시킨다. • 하드웨어의 성능에 다라 시간당 도는 프레임수가 다르다 • 물리 효과가 적용되지 않은 오브젝트의 움직임이나 단순한 타이머, 키 입력을 받을 때 사용됩니다. |
Yield null |
• 코루틴은 다음 프레임에서 모든 Update 함수가 호출된 후에 속행합니다. |
yield WaitForSeconds |
• 프레임에 대한 모든 Update 함수가 호출된 후 지정된 시간 지연 후에 속행합니다. |
yield WaitForFixedUpdate |
• 모든 스크립트에서 모든 FixedUpdate 호출 후 속행합니다. |
yield WWW |
• WWW 다운로드 완료 후 속행합니다. |
yield StartCoroutine |
• 코루틴을 연결하고 MyFunc 코루틴이 먼저 완료될 때까지 기다립니다. |
Internal animation update |
|
LateUpdate() |
• 모든 Update 함수가 호출된 후, 마지막으로 호출됩니다. • 주로 오브젝트를 따라가게 설정한 카메라는 LateUpdate 를 사용합니다. • 카메라가 따라가는 오브젝트가 Update함수 안에서 움직일 경우가 있기 때문 |
|
|
Scene rendering |
|
OnWillRenderObject |
• 오브젝트가 표시되면 각 카메라에 __ 한 번 __ 호출됩니다. |
OnPreCull |
• 카메라가 씬을 추려내기 전에 호출됩니다. • 컬링(Culling)하여 카메라에 어떤 오브젝트를 표시할 지가 결정됩니다. • OnPreCull은 컬링이 발생하기 직전에 호출됩니다. |
OnBecameVisible |
• 오브젝트가 카메라에 표시되게 될 때 호출됩니다. |
OnBecameInVisible |
• 오브젝트가 카메라에 표시되지 않게 될 때 호출됩니다. |
OnPreRender |
• 카메라가 씬의 렌더링을 시작하기 전에 호출됩니다. |
OnRenderObject |
• 모든 씬 렌더링 종료 후에 호출됩니다. • GL 클래스 또는 Graphics.DrawMeshNow을 사용하여 이 시점에 사용자 지정 지오메트리를 그릴 수 있습니다. |
OnPostRender |
• 카메라가 씬의 렌더링을 종료한 후 호출됩니다. |
OnRenderImage |
화면 렌더링이 완료되고, 화면 이미지 처리가 가능하게 된 후에 호출됩니다. |
Gizmo rendering |
|
OnDrawGizmos |
• 시각화를 위한 씬 뷰에서 기즈모(Gizmos)를 그리는 데 사용됩니다. |
GUI rendering |
|
OnGUI |
• GUI 이벤트에 따라 프레임마다 여러 차례 호출됩니다. • 레이아웃 및 리페인트 이벤트가 먼저 처리된 후 레이아웃 및 키보드 / 마우스 이벤트가 각 입력 이벤트에 대해 처리됩니다. |
|
|
End of frame |
|
Yield WaitForEndOfFrame |
프래임이 끝날때마다 호출 |
|
|
Pausing |
|
OnApplicationPause |
어플리케이션이 정지되었을 때 |
|
|
Disable/enable |
|
OnDisable |
• 이 Script가 부착된 오브젝트가 비활성화되는(꺼지는)순간마다, 실행구문 안의 내용을 한 번씩 실행시킨다. |
|
|
Decommissioning |
|
OnApplicationQuit |
• 이 함수는 응용 프로그램 종료 전에 모든 게임 오브젝트에서 호출됩니다. 에디터에서는 사용자가 재생 모드를 중지하면 호출됩니다. 웹 플레이어에서는 웹 뷰가 닫힐 때 호출됩니다. |
OnDisable |
• 이 Script가 부착된 오브젝트가 비활성화되는(꺼지는)순간마다, 실행구문 안의 내용을 한 번씩 실행시킨다. |
OnDestroy |
• 오브젝트 생존기간의 마지막 프레임의 프레임 업데이트 후 OnDestroy가 호출됩니다. • 오브젝트는 Object.Destroy 또는 씬 종료시에 파기됩니다 |
참조
(서적)C# 초보자를 위한 유니티 게임게발 스타트업
https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html
http://developug.blogspot.kr/2014/09/update-fixedupdate-lateupdate.html
'응용프로그램 > 유니티(Unity)' 카테고리의 다른 글
Unity - 이동 및 회전 (0) | 2016.10.02 |
---|---|
Unity - 3D게임 공부자료 모음 (0) | 2016.10.02 |
Unity 학습자료 - 인터페이스 (0) | 2016.10.01 |
Unity audio.clip_관련 정리 (0) | 2016.07.13 |
Unity - 키보드 마우스 입력 (0) | 2016.07.10 |