
유니티는 사용자가 호출하지 않아도 호출되는 함수들이 있습니다.
그 함수들의 호출주기를 유니티 생명주기(LifeCycle)라고 부릅니다.
함수들의 호출시기는 사용자가 정할 수 없으므로 생명주기에 대해
이해하는 것은 유니티를 다루는데 필수입니다.
그중에서도 가장 많이 쓰이는 Awake, OnEnable, Start, Update 등에 대해 알아보겠습니다!
Awake-> OnEnable -> Start -> Update
Awake()
- 스크립트가 활성화/비활성화 상관없이 오브젝트가 활성화 될 때 실행
- 1번만 호출됩니다.
- 코루틴화 할 수 없습니다.
Start()
- 오브젝트와 스크립트가 둘다 활성화 될 때 실행
- 1번만 호출됩니다.
- 코루틴화 할 수 있습니다.
Update()
- 오브젝트와 스크립트가 둘다 활성화 될 때 호출
- 매 프레임마다 호출됩니다.
- 매 프레임마다 변경 되어야할 부분이 있을 때 사용합니다.
- 프레임마다 호출되기 때문에 간격이 다를 수 있습니다.
FixedUpdate()
- Update함수와 거의 비슷하지만 호출 주기가 규칙적 입니다.
- 주로 물리연산과 관련된 작업(Rigidbody ...)등에 사용하는 것을 권장합니다.
LateUpdate()
- 모든 Update함수가 호출된 후, 마지막으로 호출
- 주로 오브젝트를 따라가게 설정한 카메라 등에 사용하는 것을 권장합니다.
OnEnable()
- 오브젝트와 스크립트가 둘다 활성화 될 때마다 매번 호출
OnDisable()
- 오브젝트와 스크립트 둘중 하나라도 비활성화 될 때마다 매번 호출
위에서 언급했듯 Awake-> OnEnable -> Start -> Update 순으로 실행되는 것은 맞습니다.
A스크립트와 B스크립트가 있을 때 실행되는 순서는
될 것 같지만 실제로 실행 결과는
위와같이 실행 됩니다.
그 이유는 어떤 스크립트에서 Awake가 실행 될 때 OnEnable도 같이 실행됩니다.
헷갈릴 수 있는 부분이라 기록으로 남겨놓습니다.
