-
[Unity] 유니티 생명주기 (Life Cycle)Unity 2022. 7. 27. 23:06
유니티 생명주기란?
유니티 스크립트의 대부분은 Monobehaviour클래스를 상속받아 만들어진다.
이 클래스를 상속받은 오브젝트는 Scene에 있는 동안 엔진에서 일정한 흐름에 따라 자동을 함수를 호출하는데, 이 패턴의 흐름을 생명 주기(Life Cycle)라고 부른다.
전체 흐름
전체적인 흐름은 공식 사이트를 보면 된다.
https://docs.unity3d.com/kr/530/Manual/ExecutionOrder.html
하지만 너무 복잡하고 많으니 자주 사용하는 함수들만 정리하겠다.
중요 흐름

시작 부분

- Awake
- 스크립트가 실행될 때 1번만 호출된다.
- 오브젝트가 비활성화일 경우엔 호출되지 않지만 스크립트가 비활성화일 경우엔 호출된다.
- 생성자처럼 게임의 상태 또는 변수 초기화로 사용한다.
- 오브젝트의 초기화 또는 프리팹의 인스턴스 화가 모두 진행된 직후 호출되기 때문에 Find 함수 호출의 안정성을 보장한다.
- 코루틴으로 실행할 수 없다.
- OnEnable
- 오브젝트 또는 스크립트가 활성화될 때마다 호출된다.=
- 코루틴으로 실행할 수 없다.
- Reset
- 오브젝트에 처음 연결하거나 Reset 커맨드를 사용할 때 스크립트의 프로퍼티를 초기화하기 위해 Reset을 호출한다.
- Start
- 스크립트가 활성화될 때 1번만 호출된다.
- 오브젝트 또는 스크립트가 비활성화일 경우 호출되지 않는다.
- 다른 모든 스크립트의 Awake가 모두 실행된 이후에 실행된다.
- 코루틴으로 실행할 수 있다.
핵심 부분


- FixedUpdate
- 고정된 프레임 주기로 호출되는 함수이다.
- 스크립트가 활성화되어 있어야 호출된다.
- OnTriggerXXX
- 두 오브젝트의 충돌 체크를 하는 함수이다.
- 물리 연산을 하지 않고 통과한다.
- OnCollisionXXX
- 두 오브젝트의 충돌 체크를 하는 함수이다.
- 물리의 영향을 받으며 Rigidbody가 존재해야 한다.
- Update
- 매 프레임마다 호출되는 함수로 디바이스 성능이나 최적화 상황에 따라 framerate가 변하므로 함수 호출 시간이 매번 달라진다.
- 스크립트가 활성화되어 있어야 호출된다.
- LastUpdate
- 모든 Update함수가 호출된 후 1번씩 호출된다.
- 스크립트가 활성화되어 있어야 호출된다.
- 카메라 이동 로직에 주로 사용한다.
종료 부분

- OnApplicationQuit
- 응용 프로그램 종료 전 모든 오브젝트에서 호출된다.
- OnDisable
- 오브젝트 또는 스크립트가 비활성화될 때마다 호출된다.
- 이벤트 연결 종료 시 사용한다.
- 코루틴으로 실행할 수 없다.
- OnDestroy
- 오브젝트 생존 기간의 마지막 프레임이 업데이트된 후 실행된다.
'Unity' 카테고리의 다른 글
[Unity] Addforce (0) 2022.08.23 [Unity] 인스턴스화 Instantiate의 정리 (0) 2022.07.25 [Unity] 충돌 처리 Collision / Trigger의 정리 (0) 2022.07.22 [Unity] 코루틴(Coroutine) 정리 (0) 2022.07.21 - Awake