반응형

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() 함수가 호출되는 것을 확인할 수 있다.

반응형