게임 엔진에서 게임 오브젝트는 게임 세상에 존재하는 하나의 물체입니다. 유니티는 게임오브젝트를 컴포넌트 패턴을 사용해 만듭니다. 컴포넌트 패턴 혹은 컴포지션(composition) 패턴이랑 미리 만들어진 부품을 조립하여 완성된 오브젝트를 만드는 방식입니다. 컴포넌트 방식은 미리 만들어진 컴포넌트를 빈 껍데기인 게임 오브젝트에 조립하는 방식입니다. 이렇게 되면 유연하게 재사용이 가능하고, 기획자의 프로그래머의 의존도가 낮아지며 독립성 덕분에 기능 추가 삭제가 쉽습니다.
MonoBehaviour?
유니티의 모든 컴포넌트는 monobehaviour 클래스를 상속합니다. MonoBehaviour클래스는 유니티에서 미리 만들어 제공하는 클래스이며 컴포넌트에 필요한 기본 기능을 제공합니다. 즉, MonoBehaviour를 상속한 클래스는 게임 오브젝트에 컴포넌트로서 추가될 수 있습니다. MonoBehaviour를 상속해서 만든 컴포넌트는 유니티의 제어를 받게 됩니다.
메세지 기반 방식?
유니티 엔진은 어떤 게임 오브젝트에 어떤 컴포넌트가 추가되었는지를 모두 파악하지 않습니다.. 따라서 유니티는 컴포넌트의 어떤 기능을 실행시키고 싶을 때 메세지를 날리는 방식을 사용합니다.
유니티는 발동시키고 싶은 기능의 이름을 담아 게임 세상에 메세지를 뿌립니다. 게임 세상에 오브젝트가 100개 있다면 100개 오브젝트가 모두 메시지를 받습니다.
메세지 기반 방식은 누가 메시지를 보냈는지, 누가 받게 될지 신경 쓰지 않기 때문에 컴포넌트의 독립성을 유지할 수 있습니다. 이런 식으로 무차별적으로 여러 오브젝트에 동시에 뿌리는 방법을 '브로드캐스팅'이라고 합니다.
※ 브로드캐스팅(broadcasting)
브로드캐스팅(broadcasting)은 송신 호스트가 전송한 데이터가
네트워크에 연결된 모든 호스트에 전송되는 방식을 의미한다.
게임 오브젝트 01 | 게임 오브젝트 02 | 게임 오브젝트 03 |
컴포넌트 01 { Eat, Play, Work, Run } 컴포넌트 02 { Die, Kill, Fly } |
컴포넌트 01 { Eat, Play, Run } 컴포넌트 02 { Eat, Play, Work, Run } 컴포넌트 03 { Make, Dance } |
컴포넌트 01 { Play, Work, Run, Die } 컴포넌트 02 { Play } |
유니티 컴포넌트들의 Eat( )기능을 일괄 실행하려고 합니다. 게임 세상에 Eat( )라는 메세지를 브로드캐스팅 즉, 모든 게임 오브젝트와 컴포넌트에 Eat( )를 뿌립니다. 메세지를 받은 오브젝트들은 메세지가 어디서 왔는지 따지지 않고 메세지가 있다면 기능을 실행하고 메세지가 없다면 메세지는 무시합니다.
유니티 이벤트 메서드?
유니티는 이름 철자만 똑같이 구현해두면 메세지에 의해 자동으로 실행되는 메서드들이 있습니다. 이러한 메서드(ex. Update, Start, OnTriggerEnter)를 유니티 이벤트 함수 또는 유니티 이벤트 메서드라고 합니다.
※ 출처: 레트로의 유니티 게임 프로그래밍 에센스: C#으로 배우는 입문부터 4가지 게임 제작까지.
공부 목적으로만 사용하였습니다.
'🎯 game engine > ◽ 유니티(unity)' 카테고리의 다른 글
(unity) 생명주기,unity Lifecycle, 이벤트 함수의 실행 순서, 코루틴 (0) | 2022.09.15 |
---|---|
(unity) 속도와 시간 간격 (0) | 2022.07.12 |
(unity) GetComponent, GetAxis, OnTriggerEnter, OnCollisionEnter, FindObjectOfType (0) | 2022.07.12 |
(unity/warning CS0108, NullReferenceException) (0) | 2022.04.18 |
(Unity/ error: CS8357) deterministic compilation failed (0) | 2022.04.16 |
안 하는 것 보다 낫겠지
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!