728x90

이 글은 [따라하면서 배우는 고박사의 유니티 기초]의 유니티 이벤트 함수 강의를 정리한 글이다.

 

학습 페이지

 

www.inflearn.com


 

컨퍼런트로 사용되는 스크립트에는 하나의 class가 정의되어있는데, 지금은 클래스,스크립트, 컨퍼런트 모두 동일하다고 생각할 수 있다.

이러한 클래스는 유니티에서 제공하는 이벤트 함수와 사용자 정의 함수, 변수로 구성되어 있다.

게임이 실행되면 현재 hierarchy view에 게임 오브젝트들에 종속되어 있는 모든 컴포넌트에 이벤트 함수가 특정 순서, 조건에 따라 실행된다. 예를 들어 start 함수를 실행하라고 유니티에서 메시지를 보내게 되면 모든 게임 오브젝트의 컴포넌트들은 본인이 start 함수가 있는지 검사하고 있으면 실행하게 된다.

 

자동으로 실행되는 이벤트 함수 내부에 직접 작성한 코드들을 넣어 게임을 적용시키게 된다.

유니티 이벤트 함수 

이벤트 함수는 사전에 정의된 순서, 특정 조건을 만족할 때 자동으로 호출된다.

 

초기화를 위한 이벤트 함수

스크립트를 생성하고 EventFuntionsTest라고 이름을 설정한다. 그리고 빈 오브젝트를 생성하여 컨퍼런트로 생성한 스크립트를 적용한다.

 

대부분의 이벤트 함수는 private void 이벤트 함수 이름을 작성하며, 대부분은 다음과 같은 구조를 가지게 된다.

Awake() 함수

현재 씬에서 게임 오브젝트가 활성화 되어 있을 때 1회 호출된다. 이는 컴포넌트가 비활성화 상태여도 게임 오브젝트가 활성화 되어 있으면 호출된다.

데이터를 초기화 하는 용도로 사용되는 함수이다.

 

Start() 함수

현재 씬에서 게임 오브젝트와 컴포넌트가 모두 활성화 되어 있을 때 1회 호출된다.

데이터를 초기화 하는 용도로 사용되며, 첫 번째 업데이트 함수가 실행되기 직전에 호출된다.

초기화 함수 호출 순서는 Awake() > OnEnable() > Start() 순서이다.

 

OnEnable() 함수

컴포넌트가 비활성화 되었다가 활성화 될 때마다 1회 호출된다.

 

 


업데이트를 위한 이벤트 함수

 

update() 함수

현재 씬이 실행된 후 컴포넌트가 활성화되어 있을 때 매 프레임마다 호출된다.

컴포넌트가 활성화되어 있을 때 실행이 가능하고, 매 프레임마다 호출되는 실행 화면을 확인할 수 있다. 

 

LateUpdate() 함수

한 프레임에서 현재 씬에 존재하는 모든 게임오브젝트의 Update()가 1번 호출된 후 실행된다.

호출 순서는 Update() > LateUpdate() 이다. 호출 순서만 다르고 Update()함수와 역할은 동일하다.

 

Update와 호출 횟수는 동일하지만 순서만 다르다.

 

FixedUpdate() 함수

1초에 50회로 프레임의 영향을 받지 않고 정해진 회수만큼 호출한다. 정해진 횟수는 유니티에서 기본으로 설정 되어 있지만 Edit > Project Settings > Time 옵션에 “Fixed Timestep”에서 호출 주기 설정을 바꿀 수 있다.

 

정해진 횟수만 호출된 것을 확인할 수 있다. 


오브젝트 파괴 (Destroy Object)를 위한 이벤트 함수

OnDestroy() 함수

게임오브젝트가 파괴될 때 1회 호출된다.

씬이 변경되거나 게임이 종료될 때도 오브젝트가 파괴되기 때문에 호출된다.

 

delete로 게임 오브젝트를 삭제하면 OnDestroy() 함수가 호출되며,실행 후 종료를 눌러도 OnDestroy()함수가 호출된다.

 

 


종료를 위한 이벤트 함수

OnApplicationQuit() 함수

게임이 종료될 때 1회 호출되며, Unity Editor에서는 플레이 모드를 중지할 때 호출된다.

 

OnDisable() 함수

게임 오브젝트가 활성화 되었다가 비활성화 될 때마다 1회 호출된다.

+ Recent posts