Unity Script LifeCycle
유니티를 사용하면서 Awake, Start 등 기본적으로 실행해주는 함수들이 많다.
그런데 여기서 Awake도 실행하면 처음에 시작하고 Start도 처음에 실행하면 시작하는데 무슨 차이가 있을까?
Unity의 공식 문서에 따르면 생명주기는 다음과 같다.
자주 쓰는 함수들을 대략적으로 설명하면 다음과 같다.
[요약]
- Awake : 가장 먼저 호출되는 함수로 처음 한 번만 실행된다.
- Start : Update 전에 호출되는 함수로 처음 한 번만 실행된다.
- OnEnable : 오브젝트가 활성화 직후 호출한다.
- FixedUpdate : 초당 50번 실행 하며 Update 보다 빨리 호출되는 함수다. (dfault : 0.02)
- Update : 컴퓨터의 성능에 따라 다르며 매 프레임 마다 호출되는 함수다.
- LateUpdate : Update가 끝난 후 프레임 당 한 번 호출되는 함수다.
- OnMouse Input 이벤트 들 : Fixed Update 보다 나중에 호출되고, Update 보다 빨리 호출된다.
- OnDisable : 오브젝트가 활성화 된 상태에서 비활성화 될 때 호출되는 함수다.
- OnDestroy : 오브젝트가 파괴되기 전 호출되는 함수로 모든 프레임 업데이트를 마친 후 호출된다.
[정리]
Unity 프로젝트를 진행하며 다른 Script를 참조하는 경우가 정말 많은데, 다른 Script가 초기화 되기 전에 호출이 되면 Null 오류가 많이 생기게 된다. (첫 프로젝트 때 정말 많이 발생한 Null 오류...)
그래서 Awake에서는 GameObject.Find, GetComponent<> 등 다른 Scirpt의 참조에 많이 사용했고, 그 다음에 초기화를 Start에서 주로 호출해 사용했다.
생명주기를 잘 파악해 두어야 Script에서 서로 참조하는 관계에서 순서가 꼬이는 상황이 줄어들고 코드가 더 깔끔해지므로 익숙해 지는 것이 좋다.
[참고]
https://docs.unity3d.com/kr/2019.4/Manual/ExecutionOrder.html
반응형
'Game > Unity' 카테고리의 다른 글
[Unity] Touch로 물체 Drag하기 (0) | 2024.04.04 |
---|---|
[Unity] UI Text script로 변경하기 (0) | 2024.03.27 |