콘텐츠로 이동

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() 등의 함수 실행
  • 스크립트를 다시 킬 경우 생명 주기 관련 함수 실행