Chapter 2. 오브젝트 흐름¶
'골드 메탈 유니티 기초강좌' B5 학습 내용
1절. 게임 오브젝트 생명 주기
2절. 생명 주기 함수
1절. 게임 오브젝트 생명 주기¶
정의¶
- 생명 주기(Life Cycle)
- 게임 오브젝트가 생성되고 소멸되기까지의 과정
- 과정을 일정한 흐름에 따라 자동으로 함수 호출
순서¶
| 순서 | 단계 |
|---|---|
| 1 | 탄생 |
| 2 | 활성화 |
| 3 | 시작 |
| 4 | 고정 업데이트 |
| 5 | 업데이트 |
| 6 | 늦은 업데이트 |
| 7 | 비활성화 |
| 8 | 파괴 |
초기화 - (활성화) - 물리연산 - 게임로직 - (비활성화) - 해제 순서
MonoBehaviour¶
- 상속받는 순간 자동으로 Scene에서 흐름 생성
- 자동으로 호출해주는 함수들 생성
- 즉, MonoBehaviour을 상속받지 않는 순간 생명주기 함수들 사용 불가
2절. 생명 주기 함수¶
생명 주기 함수¶
- 각 오브젝트는 자신의 현재 상태에 맞춰 특정 함수 동작
종류¶
| 종류 | 설명 |
|---|---|
| Awake() | 초기화-최초 |
| Start() | 초기화-프레임 시작 |
| FixedUpdate() | 프레임-물리 |
| Update() | 프레임-로직 |
| LateUpdate() | 프레임-후처리 |
| OnDestory() | 해제 |
Awake()¶
- 가장 초기 초기화 영역에서 실행
- 게임 오브젝트가 장면 안에 생성될 경우 최초 실행
- 게임 오브젝트가 이미 존재하는 경우 게임 오브젝트의 생성 시 실행되며 한 번만 실행(생성자 역할)
Start()¶
- Update() 영역에 들어가기 전 최초로 실행
- Awake()와 마찬가지로 한 번만 실행
- 게임 내 플레이어가 특정 행동을 취하기 전 준비 과정을 지원하기 위한 함수
Awake()와 Start()¶
- 유니티의 초기화 영역에 해당
- 물리 영역 존재
FixedUpdate()¶
- 물리 영역에서 사용
- 물리 연산과 관련된 로직을 작성할 함수
- 대략 1초에 50번 호출
- 사용자의 컴퓨터 사양 영향 X
- CPU 부하가 많은 함수
- 고정적 호출로 인해 CPU 사용량 증가
- ex : 캐릭터의 이동 로직
Update()¶
- 물리 연산을 제외한 주기적으로 변하는 로직 처리에 사용
- 환경 및 컴퓨터 성능에 따라 실행 주기 감소 위험성 존재
- 정상적인 작동 확인 필요
FixedUpdate()와 Update()¶
- FixedUpdate() : 평균 57회
- Update() : 평균 60회
- Updatee()가 FixedUpdate()보다 많이 작동
LateUpdate()¶
- 모든 로직이 실행된 후 호출
- 카메라와 같은 후처리 로직 포함
- ex : 몬스터 사냥 등의 경험치
OnDestroy()¶
- 삭제가 이루어지기 전에 호출되는 함수
- 삭제 직전 필요한 처리 진행
- 게임 오브젝트가 활동 중인 경우 발생하는 이벤트가 끝나면 해제 영역으로 진입하고, 이 시기에 삭제 기능 활성화
- ex : 플레이어 데이터가 존재했을 경우 해체되는 오브젝트와 연관 지어 처리
OnEnable()과 OnDisable()¶
-
오브젝트의 활성화화 비활성화는 각각 관리
-
OnEnable()
-
활성화 : 초기화 관련 위치에서 발생
- 오브젝트가 활성화될 때마다 실행
-
최초 1회 실행이 아닌 매번 호출
-
OnDisable()
- 비활성화 : 해체 관련 위치에서 발생
- 모든 업데이트가 끝난 후 비활성화
정리¶
- 코드 실행 시 Awake(), OnEnable(), Start() 한 번씩 실행
- 오브젝트 스크립트 종료 시 OnDisable() 등의 함수 실행
- 스크립트를 다시 킬 경우 생명 주기 관련 함수 실행