본문 바로가기
Unity

게임 엔진의 원리 : 메시지와 브로드캐스팅

by imagineer_jinny 2021. 6. 10.

컴포넌트들이 어떻게 외부의 간섭 없이 스스로를 동작시킬까?

 

유니티의 모든 컴포넌트들은 MonoBehaviour 클래스를 상속함.

즉 MonoBehaviour 클래스 위에 컴포넌트 고유의 기능을 덧붙임.

 

MonoBehaviour 클래스는 유니티에서 미리 만들어서 제공하는 클래스이고 

컴포넌트로서 동작하기 위한 기초 기능들을 모두 제공함.

MonoBehaviour

- 컴포넌트로서 게임 오브젝트에 추가될 수 있다.

- 유니티의 통제를 받는다.

- 유니티 이벤트 메시지를 감지할 수 있게 된다.

 

유니티엔진에서 모든 씬의 모든 게임 오브젝트에 각각의 어떤 컴포넌트가 붙어있는지 모조리 실시간으로 한 번에 파악할 수 있는 매니저같은 것은 없음.

 

 그러나 유니티의 대부분의 컴포넌트들은 예를 들어 초기화 메서드 같은 것들은 반드시 실행을 해야 함.

그리고 이것들을 실행하기 위해서 유니티는 실행하고 싶은 기능에 이름을 담아서 게임 세상에 메시지를 날림.

 

메시지

-보내는 쪽은 누가 받는지 신경쓰지 않는다.

-받는 쪽은 누가 보냈는지 신경 쓰지 않는다.

(->덕분에 독립성이 유지됨)

-메시지에 명시된 기능을 가지고 있으면 실행, 없으면 무시한다.

 

브로드 캐스팅

메시지를 무차별적으로 많이 보내는 것

 

 

유니티 이벤트 메서드

이름만 맞춰 구현하면, 해당 타이밍에 자동으로 실행된다.

ex. Start, Update, OnTriggerEnter...

 

메시지/ 브로드캐스팅 시스템

복잡한 참조 관계를 끊고 각각의 게임 오브젝트들이 라이프싸이클을 스스로 관리할 수 있게 함

ex. Update() : 외부에서 직접 찾아 실행할 필요 없음. 스스로 매 프레임 실행됨.

 

 

정리

유니티의 모든 컴포넌트는 MonoBehaviour 기반.

컴포넌트는 메시지를 받을 수 있다.

메시지에 해당하는 기능을 가지고 있으면 실행한다.

이벤트 기반 메서드는 메시지를 통해, "실행되야 할 타이밍에" 자동 실행된다.

 

 

 

출처: 레트로의 유니티 C# 게임 프로그래밍 에센스 강의

댓글