(unity) 생명주기,unity Lifecycle, 이벤트 함수의 실행 순서, 코루틴🎯 game engine/◽ 유니티(unity)2022. 9. 15. 16:32
Table of Contents
728x90

1. 주요 함수 간단 정리
Awake | Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출. |
Start | 업데이트 시작 직전 최초로 실행. |
OnEnalbe | 오브젝트가 활성화된 경우에만 활성화 직 후 이 함수를 호출. |
FixedUpdate | FixedUpdate 는 종종 Update 보다 더 자주 호출됨. 프레임 속도가 낮은 경우 프레임당 여러 번 호출될 수 있음. 모든 물리 계산 및 업데이트는 FixedUpdate 후 즉시 발생. FixedUpdate 의 움직임 계산을 적용할 때 Time.deltaTime 만큼 값을 곱할 필요가 없음. - 이유: FixedUpdate 가 프레임 속도와 관계없이 신뢰할 수있는 타이머에서 호출되기 때문 |
Update | Update 는 프레임당 한 번 호출. 프레임 업데이트를 위한 주요 작업 함수. |
LateUpdate | LateUpdate 는 Update 가 끝난 후 프레임당 한 번 호출 Update 에서 수행된 모든 계산은 LateUpdate 가 시작할 때 완료 |
OnGUI | GUI 이벤트에 따라 프레임당 여러 번 호출 레이아웃 및 리페인트 이벤트는 우선 처리되며 각 입력 이벤트에 대해 레이아웃 및 키보드/마우스 이벤트가 다음으로 처리. |
OnPreRender | 카메라가 씬 렌더링을 시작하기 전에 호출. |
OnPostRender | 카메라가 씬 렌더링을 마친 후 호출. |
OnDrawGizmos | 시각화 목적으로 씬 뷰에 기즈모를 그릴 때 사용. |
OnApplicationQuit | 애플리케이션 종료 전 모든 게임 오브젝트에서 호출. 에디터에서 사용자가 플레이 모드를 중지할 때 호출. |
OnDisable | 동작이 비활성화되거나 비활성 상태일 때 이 함수가 호출. |
OnDestroy | 오브젝트 존재의 마지막 프레임에 대해 모든 프레임 업데이트를 마친 후 이 함수가 호출. 오브젝트는 Object.Destroy 또는 씬 종료에 대한 응답으로 파괴될 수 있음. |
2. 코루틴 (CoRoutine -> Co"협력, 함께" + Routine)
한 부분에서 실행을 중지하여 Unity에 제어권을 돌려주고, 계속할 때는 다음 프레임에서 중지한 곳부터 실행을 계속할 수 있는 기능이다.
- 코루틴의 동작 : CleaningHouse( ) 코루틴을 실행하면 먼저 A를 청소하고, 다음의 yield문을 만나는 순간 10초 동안 코루틴 진행이 일시 정지된다. 코루틴이 처리를 쉬는 동안에는 프로그램의 다른 코드기 실행 될 수가 있다. 그리고 남은 처리를 이어서 진행한다.
IEnumerator CleaningHouse
{
// A방 청소
yield return new WaitForSeconds(10f); // 10초 대기
// B방 청소
yield return new WaitForSeconds(10f); // 10초 대기
// C방 청소
}
- 진행 순서: IEnumerator CleaningHouse( ) -> A 방 청소 -> yield return new WaitForSeconds(10f); -> -> -> (10초 동안 다른 코드 실행) -> -> -> B 방 청소 -> yield return new WaitForSeconds(10f); -> -> -> (10초 동안 다른 코드 실행) ....
코루틴이 처리를 쉬는 동안에 프로그램의 다른 코드가 실행될 수 있다.

- Unity 코루틴 사용 문법: Ienumerator 반환 타입과 body 어딘가에 포함된 yield 반환문으로 선언하는 메서드이다.
- IEnumerator는 "열거자"로 데이터의 목록을 하나씩 넘겨줄 때 사용되는 인터페이스이다. - 코루틴 실행: StartCoroutine ( "코루틴 메서드를 실행한 반환값" or "코루틴 메서드의 이름" ) ;
- 코루틴 시간 지연
- 초 단위로 쉬기 yield return new WaitForSeconds( 시간 ) ;
- 한 프레임만 쉬기: yield return null ; - 코루틴 정지: StopCoroutine, StopAllCoroutine, 코루틴에 연결된 게임오브젝트를 비활성화하기 위해 SetActive를 false로 설정하면 코루틴이 정지 된다.
Reference.
- unity 도큐멘테이션 Unity User Manual 2021.3 (LTS) - Unity 매뉴얼 (unity3d.com)
- (도서) 레트로의 유니티 게임 프로그래밍 에센스
728x90
'🎯 game engine > ◽ 유니티(unity)' 카테고리의 다른 글
(unity) 속도와 시간 간격 (0) | 2022.07.12 |
---|---|
(unity) GetComponent, GetAxis, OnTriggerEnter, OnCollisionEnter, FindObjectOfType (0) | 2022.07.12 |
(unity) MonoBehaviour? 메세지 기반 방식? 유니티 이벤트 메서드? (0) | 2022.07.11 |
(unity/warning CS0108, NullReferenceException) (0) | 2022.04.18 |
(Unity/ error: CS8357) deterministic compilation failed (0) | 2022.04.16 |
@핑크코냥 :: 핑크코냥
안 하는 것 보다 낫겠지
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!