티스토리 뷰

반응형

미리 정의된 순서대로 실행되는 이벤트 함수가 있습니다. 그래서 이벤트 함수에 대한 실행 순서를 잘 이해 해두는 게 좋습니다.


그리고 자세한 설명은 유니티에 있는 레퍼런스를 참고하시기 바랍니다. (https://docs.unity3d.com/kr/530/Manual/ExecutionOrder.html)


간략하게 꼭 기억해야 될 것만 정리하겠습니다.



1. 씬로드


이 함수는 씬이 시작되면 호출됩니다. 씬에 추가 된 오브젝트에서 모든 스크립트는 Start, Update 등 기타 함수가 호출 되기 전에 Awake와 OnEnable  함수가 호출 됩니다. 오브젝트가 게임 플레이 중에 인스턴스화 되었을 때 강제로 호출할 수 없습니다.


- Awake : 항상 Start 함수의 이전 및 프리팹의 인스턴스화 직후에 호출합니다. 만약 게임 오브젝트가 시작할 때 무료인 경우, 활성화 되거나 연결된 하나의 스크립트 함수가 호출 될때까지 Awake 호출되지 않습니다.


- OnEnable : 오브젝트가 활성화 된 경우에만 호출 됩니다. MonoBehaviour 인스턴스가 생성될 때, 예를 들어 레벨 로드 또는 스크립트 컴포넌트에 연결된 게임 오브젝트가 인스턴스화 될 때 발생합니다.


2. 첫번째 프레임의 업데이트 전


씬에 추가된 오브젝트의 Start 함수는 모든 스크립트 Update  및 기타 함수가 호출되기 전에 호출됩니다. 오브젝트가 게임 플레이 중에 인스턴스화 되었을 때 강제로 호출 할 수 없습니다.


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


3. 프레임 사이


- OnApplicationPause : 일반 프레임 업데이트 사이에서 pause가 탐지된 프레임의 끝에서 호출 됩니다. OnApplicationPause가 호출되면 추가 프레임이 발행되어, pause 상태를 나타내는 그래픽 인디케이터가 표시 됩니다.


4. 업데이트 순서


- FixedUpdate : FixedUpdate()는 Update()보다 자주 호출되는 경우가 많습니다. 프레임 속도가 낮은 경우에는 프레임마다 여러 번 호출 할 수 있지만, 프레임 속도가 높을 경우 프레임간에 호출 할 수 없습니다. FixedUpdate() 직후에 모든 물리적 특성 계산 및 업데이트가 발생합니다. FixedUpdate()에서 이동 계산을 적용 할 때 Time.deltaTime 값을 곱할 필요는 없습니다. 이것은 프레임 속도와는 독립적으로 FixedUpdate()가 신뢰할 수있는 타이머에서 호출되기 때문 입니다.


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


- LateUpdate : LateUpdate()는 Update() 후 프레임마다 한 번씩 호출됩니다. Update()에서 수행되는 계산이 완료되면 LateUpdate() 함수가 시작 합니다. LateUpdate()의 일반적인 사용은 다음의 3인칭 카메라입니다. Update()에서 캐릭터를 이동하고 회전시킬 경우 LateUpdate()에서 카메라의 이동과 회전 계산을 수행할 수 있습니다. 이렇게하면 캐릭터가 카메라가 그 위치를 추적하기 전에 완전히 이동합니다.


5. 랜더링


여러가지 함수가 많지만 각각 필요한 함수를 적당히 잘 사용해야 한다. 각각 가능에 대한 설명은 유니티 사이트를 참조하자.


OnGUI : GUI 이벤트에 따라 프레임마다 여러 차례 호출됩니다. 레이아웃 및 리페인트 이벤트가 먼저 처리된 후 레이아웃 및 키보드 / 마우스 이벤트가 각 입력 이벤트에 대해 처리됩니다.


6. 코루틴


일반적인 코루틴 업데이트는 Update 함수가 반환된 후 수행됩니다. 코루틴은 Yield Instruction이 종료할 때까지 그 실행(생성)을 중지할 수 있는 함수입니다.


7. 오브젝트 소멸할때


- OnDestroy : 오브젝트 생존기간의 마지막 프레임의 프레임 업데이트 후 OnDestroy가 호출됩니다. 오브젝트는 Object.Destroy 또는 씬 종료시에 파기됩니다.


8. 종료시


씬 안에 있는 모든 활성 오브젝트에서 호출됩니다.


OnApplicationQuit : 이 함수는 응용 프로그램 종료 전에 모든 게임 오브젝트에서 호출됩니다. 에디터에서는 사용자가 재생 모드를 중지하면 호출됩니다. 웹 플레이어에서는 웹 뷰가 닫힐 때 호출됩니다.


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



728x90
반응형
댓글