[내배캠] 유니티 입문 팀프로젝트#3

Sungchan Ahn(안성찬)·2024년 10월 21일

내일배움캠프

목록 보기
47/104

유니티 이벤트 함수

Enemy를 오브젝트 풀에서 가져다 쓰면서 Enemy 오브젝트의 활성화/비활성화(SetActive(true/false))가 반복되는 과정에서 여러 스크립트의 Awake, OnEnable, Start에서 작성한 코드가 매우 복잡하게 꼬이게 되는 것을 느꼈다. 그래서 오브젝트가 활성화될 때, Awake, OnEnable, Start가 어떻게 동작하는지 알아보았다.

1. Awake

항상 Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출된다.
게임 오브젝트가 시작하는 동안 비활성 상태(SetActive(false))인 경우 Awake 함수는 활성화될 때까지 호출되지 않는다. 스크립트 컴포넌트가 비활성화된 상태(enabled = false)에서도 Awake는 실행되기 때문에 기본적으로 초기화 되어야 하는 부분을 Awake에서 작성한다.
요약: 오브젝트가 최초로 활성화될 때 한 번 호출

2. OnEnable

오브젝트와 스크립트 컴포넌트가 모두 활성화된 직후에 이 함수를 호출한다. 활성화될 때마다 호출된다. 오브젝트 풀링을 활용하여 오브젝트를 활성화할 때마다 초기화가 필요한 필드는 OnEnable에서 작성한다.

3. Start

오브젝트와 스크립트가 최초로 활성화된 후 첫 프레임 업데이트 전에 한 번 호출된다.

필드의 초기화가 필요한 시점이 언제인지 구분하여 Awake, OnEnable, Start를 사용해야 한다.

profile
게임 개발 기록

0개의 댓글