✔ 함수 실행 순서를 알고 넘어가자!
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는 매 프레임마다 호출되는 함수이다. 현재 프레임이 처리량이 많으면 다음 프레임은 늦게 호출되며
처리량이 적다면 빨리 호출된다.
만약 FixedUpdate와 Update호출이 같은 타이밍에 호출해야한다면 우선순위에따라 FixedUpdate 처리후 Update가 처리된다.
● 프로그램이 종료될때 호출되는 이벤트
프로그램이 종료를 할때에도 여러 이벤트들이 발생되고 실행되는 순서가 있다.
실행순서 | 함수명 | 설명 |
1 | OnApplicationQuit() | 종료되기전 가장 먼저 실행되는 이벤트 |
2 | OnDisable() | 게임오브젝트가 비활성화될때 호출되는 이벤트. 종료되기전 한번 더 호출된다. |
3 | OnDestroy() | 가장 마지막에 실행되는 이벤트 |
OnDisable() 이벤트는 위에서 잠깐 설명했던 내용으로 OnEnable의 반대되는 개념이다.
게임오브젝트 활성화 -> 비활성화 상태로 변경될때 호출되며 종료직전에도 한번 호출된다.
번외로 에디터에서 FixedUpdate 주기 설정방법을 알아보자
● FixedUpdate 반복 시간 설정
Edit -> Project Settings
Time -> Fixed Timestep -> 주기 값(단위 : 초) 변경
초기에는 0.02초로 설정되어있다. 값을 2로 변경하면 2초단위로 실행되는 것을 확인할 수 있다.
감사합니다.
'Programming > Unity 기초탈출기' 카테고리의 다른 글
[Unity] 유니티 기초 탈출기 - Part.03 - 스크립트 편 ( GameObject ) (0) | 2022.05.12 |
---|---|
[Unity] 유니티 기초 탈출기 - Part.01 - 로컬, 글로벌 좌표계 (246) | 2022.05.02 |
[Unity] 유니티 기초 탈출기 - Part.03 - 스크립트 편 ( GetComponent ) (577) | 2022.04.18 |
[Unity] 유니티 기초 탈출기 - Part.02 - UI 편 ( Scroll View) (748) | 2022.04.07 |
[Unity] 유니티 기초 탈출기 - Part.02 - UI 편 ( Slider, Scrollbar ) (2) | 2022.03.11 |
댓글