본문 바로가기
Programming/Unity 기초탈출기

[Unity] 유니티 기초 탈출기 - Part.03 - 스크립트 편 ( 시작, 반복, 종료 이벤트 함수 및 스크립트 함수의 실행 순서 )

by 타임박스 2022. 4. 27.
반응형


✔ 함수 실행 순서를 알고 넘어가자!
Start, Update, OnApplicationQuit
FixedUpdate 반복 주기 설정



 

유니티는 일명 Mono Framework를 사용한다라고 말하고 있습니다.

유니티에서 스크립트를 생성하면 자동으로 MonoBehaviour를 자동으로 상속 받아져있죠?

MonoBehaviour에는 엄청 많은 API들이 구성되어있습니다.

다 알기도.. 설명하기도 힘듭니다 ㅠ_ㅠ

우리는 최소한 우리가 필요한 것들은 알고 있어야합니다.

가장 기본이 되는 것은 Start, Update 입니다.

스크립트를 생성하면 Start(), Update()가 자동으로 만들어져있죠?

이 두개 말고도 비슷한 기능들을 하는 함수들이 존재합니다.

실행순서와 각 역할에 대해서 알고 넘어가야합니다.

 

● 프로그램 실행시 한번만 호출되는 함수

실행순서 함수명 함수 설명
1 Awake() 가장 먼저 호출 되는 함수
2 OnEnable() 게임 오브젝트가 활성화 될때마다 호출
3 Start() 첫번째 프레임 (Update함수) 호출되기 직전에 호출

일단 쉽게 설명하자면 프로그램이 실행되고 실행순서대로 1번씩만 호출된다.

만약 실행되기전 게임오브젝트가 비활성화 상태로 실행된다면 아무것도 호출되지 않는다.

비활성화상태

보통은 값 초기화를 Start에서 구현한다.

Start 함수 전에 초기화되어야할 내용이 있다면 Awake에서 구현하면된다.

OnEnable 함수는 게임오브젝트가 활성화 될때마다 다시 호출되는 함수이다.

활성화 상태로 변경

위 그림처럼 비활성화상태 -> 활성화 상태오브젝트를 껏다켰다할때마다 호출된다.

(참고로 반대로 OnDisable 함수도 존재한다. 활성화 -> 비활성화로 변경될때 호출된다)

그래서 이 함수는 시 오브젝트가 활성화 될때 필요한 값들을 초기화하는 역할로 사용해야한다.

 

● 주기적(반복)으로 호출되는 함수

위의 함수들이 다 호출되고 나면 주기(반복)함수가 실행된다. 

 

우선순위 함수명 설명
1 FixedUpdate() 일정 주기로 함수 호출
2 Update() 처리되는 계산량에 따라 프레임 호출

FixedUpdate에디터에서 설정된 Time 주기만큼 주기적으로 호출되는 함수이다.

하지만 매 프레임마다 처리량이 많으면 일정주기로 호출이 불가능 할 수 있다.

Update는 매 프레임마다 호출되는 함수이다. 현재 프레임이 처리량이 많으면 다음 프레임은 늦게 호출되며 

처리량이 적다면 빨리 호출된다.

만약 FixedUpdateUpdate호출이 같은 타이밍에 호출해야한다면 우선순위에따라 FixedUpdate 처리후 Update가 처리된다.

 

● 프로그램이 종료될때 호출되는 이벤트

프로그램이 종료를 할때에도 여러 이벤트들이 발생되고 실행되는 순서가 있다.

실행순서 함수명 설명
1 OnApplicationQuit() 종료되기전 가장 먼저 실행되는 이벤트
2 OnDisable() 게임오브젝트가 비활성화될때 호출되는 이벤트. 종료되기전 한번 더 호출된다.
3 OnDestroy() 가장 마지막에 실행되는 이벤트

OnDisable() 이벤트는 위에서 잠깐 설명했던 내용으로 OnEnable의 반대되는 개념이다.

게임오브젝트 활성화 -> 비활성화 상태로 변경될때 호출되며 종료직전에도 한번 호출된다.

 

번외로 에디터에서 FixedUpdate 주기 설정방법을 알아보자

● FixedUpdate 반복 시간 설정

Edit -> Project Settings

Time -> Fixed Timestep -> 주기 값(단위 : 초) 변경

초기에는 0.02초로 설정되어있다. 값을 2로 변경하면 2초단위로 실행되는 것을 확인할 수 있다.

감사합니다.

반응형

댓글