01 유니티 이벤트 함수
- 유니티에는 개발자의 편의를 위해 미리 정의해 둔 이벤트 함수가 존재
- 사전에 정의된 순서에 따라 특정 조건을 만족할 때 자동으로 호출된다.
02 초기화를 위한 이벤트 함수
Awake()
EventFunctionsTest라는 이름의 script를 생성한다.
빈 오브젝트를 하나 생성하고, EventFunctionsTest를 컴포넌트로 적용한다.
대부분의 이벤트 함수는 'private void 이벤트함수이름()'을 작성하게 되며, 대부분 위와 같은 구조를 가진다.
Awake() 함수
- 현재 씬에서 게임오브젝트가 활성화되어 있을 때 1회 호출(컨포넌트가 비활성화 상태여도 게임오브젝트가 활성화되어 있으면 호출된다.)
- 데이터를 초기화하는 용도로 사용
플레이 버튼을 누르게 되면, 콘솔 뷰에 출력되는 것을 확인할 수 있다.
만약 게임 오브젝트가 비활성화되어 있다면, 실행했을 때 호출이 되지 않는다.
Start()
- 현재 씬에서 게임 오브젝트와 컴포넌트가 모두 활성화되어 있을 때 1회 호출
- 데이터를 초기화하는 용도로 사용
- 첫 번째 업데이트 함수가 실행되기 직전에 호출
- 초기화 함수 호출 순서 Awake() → OnEnable() → Start()
처음부터 오브젝트가 활성화되어 있을 때는 차이가 없다.
하지만 Awake가 먼저 실행되고 Start 함수가 실행되는 것을 확인할 수 있다.
조건을 바꿔서 컴포넌트가 꺼져있을 때 실행을하면 Awake 함수는 실행이 된다.
따라서, Start() 함수는 게임오브젝트와 컴포넌트가 모두 활성화되어야 실행되는 것을 알 수 있다.
OnEnable()
- 컨포넌트가 비활성화되었다가 활성화될 때마다 1회 호출
가장 먼저 게임오브젝트와 컴포넌트 모두 비활성화한 후 실행하면, 당연히 아무것도 실행되지 않는다.
게임 오브젝트를 활성화하면 Awake가 실행이 된다.
컴포넌트도 활성화하면 모두 실행이 된다.
위의 상태에서 컴포넌트를 비활성화한 후에 다시 활성화하면
다시 OnEnable 함수가 실행되는 것을 볼 수 있다.
게임오브젝트를 비활성화한 후에 활성화하는 경우에도 컴포넌트가 함께 활성화되었다고 판단하기 때문에 OnEnable 함수가 호출된다.
03 업데이트를 위한 이벤트 함수
Update() 함수
- 현재 씬이 실행된 후 컴포넌트가 활성화되어 있을 때 매 프레임마다 호출
- (FPS 60이라 하면 Update() 함수가 1초에 60번 호출된다는 뜻이다.)
컴포넌트가 활성화되어 있을 때 호출이 가능하고, 콘솔뷰의 Collapse를 이용하면 같은 결과를 묶어서 확인할 수 있다.
업데이트 함수의 내용만 증가하는 것을 확인했다.
LateUpdate() 함수
- 현재 씬에 존재하는 모든 게임 오브젝트의 Update() 함수가 1회 실행된 후 실행된다.
- 업데이트 함수 호출 순서 : Update() → LateUpdate()
- 실행 순서만 다르고 Update() 함수와 같다.
호출되는 횟수조차 같고, Update() 함수가 실행되고 LateUpdate() 함수가 실행되는 것을 확인할 수 있다.
FixedUpdate() 함수
- 프레임의 영향을 받지 않고 일정한 간격으로 호출
- Edit - Project Setting - Time 옵션의 Fixed Timestep 변수로 조절 가능(기본 값 0.02로 0.02초에 1번 호출된다는 뜻, 1초에 50번)
Update() 함수와 LateUpdate() 함수는 동일한 횟수만큼 증가하고, FixedUpdate() 함수는 정해진 횟수만큼만 증가하는 것을 확인할 수 있다.
04 오브젝트 파괴를 위한 이벤트 함수
OnDestroy() 함수
- 게임오브젝트가 파괴될 때 1회 호출
- 씬이 변경되거나 게임이 종료될 때도 오브젝트가 파괴되기 때문에 호출된다.
실행한 상태에서 게임오브젝트를 Delete한다.
그러면 OnDestroy 함수가 실행된 것을 확인할 수 있다.
또한 실행을 중단해도 OnDestroy 함수가 실행된다.
05 종료를 위한 이벤트 함수
OnApplicationQuit() 함수
- 게임이 종료될 때 1회 호출
- 유니티 에디터에서는 플레이 모드를 중지할 때 호출된다.
실행 도중에 실행을 종료하면 OnApplicationQuit() 함수가 실행되는 것을 확인할 수 있다.
OnDisable() 함수
- 컴포넌트가 활성화되었다가 비활성화될 때마다 1회 호출(OnEnable과 반대)
게임오브젝트를 비활성화하면 OnDisable() 함수가 실행되는 것을 확인할 수 있다.
다시 게임오브젝트를 활성화하면 OnEnable() 함수가 호출되는 것을 확인할 수 있다.
'PBL > Unity' 카테고리의 다른 글
유니티 2D 기초 - 게임오브젝트 물리와 충돌 (0) | 2024.04.09 |
---|---|
유니티 2D 기초 - 게임오브젝트 이동 (0) | 2024.04.08 |
유니티 기초 - 스크립트 개요, 콘솔 뷰에 데이터 출력 (0) | 2024.04.02 |
유니티 기초 - 게임 오브젝트, 컴포넌트 (0) | 2024.04.02 |
유니티 기초 - 유니티 에디터 인터페이스 (0) | 2024.04.01 |