유니티에서 New Sciript로 뭐만 만들면
항상 기본적으로 상속되는 클래스 중 하나인데 뭐하는 애일까??
알아보자
MonoBehaviour 클래스는 유니티에서 미리 만들어져서 제공되며 컴포넌트에 필요한 기본 기능을 제공한다.
줄여서 말하자면 MonoBehaviour에는 컴포넌트에 필요한 필수 기능들이 들어가있다.
다시 말하면 MonoBehaviour를 상속받아야만 컴포넌트 기능을 쓸 수 있는 것이다.
**유니티의 모든 컴포넌트는 MonoBehaviour를 상속한다.
컴포넌트를 이해하기 위해 컴포넌트 패턴이 어떻게 작동하는 지를 알아보자.
컴포넌트들은 서로 관심이 없다.
-> 어떤 컴포넌트는 다른 컴포넌트에 의해서 "의도하고 찾아내기"전 까지 알 수가 없다.
마찬가지로 유니티 엔진에서도 해당 컴포넌트가 어디에 붙어있는지 모른다.
아니 어디에 있는지 모르면 어떻게 작동시키는거지????
유니티는 Broadcasting이라는 방법을 쓰는데 이는 모든 곳에 메세지를 보내는 것이다.
-> 모두에게 보내는 것을 Broadcasting, 특정 대상에게 보내는 것을 Uncasting이라고 한다.
우리가 작동시킬 컴포넌트를 정했다면 유니티는 모든 게임 오브젝트에게 "작동시킬 컴포넌트(기능)"의 이름을 담아서 보낸다.
**당연히 우리가 의도한 게임오브젝트에는 해당 컴포넌트(기능을 가진)가 들어가있겠다.
그렇게 게임 오브젝트들이 메시지를 받아서
내가 "메시지에 해당하는 기능"를 가지고 있다면 해당 컴포넌트에 접근하여 기능을 실행한다.
만약 갖고 있지 않다면 메시지는 바로 버려진다.
이렇게 메시지를 보내는 것에 대한 의미는
1. 메시지를 보낼 때, 메시지를 누가 받게 될지 신경쓰지 않는다.
2. 메시지를 받을 때, 메시지를 누가 보냈는지 신경쓰지 않는다.
3. 메시지를 받을 때, 메시지가 나에게 해당되면 실행하고, 아니면 버린다.
즉, 누가 받고 보내는지 신경쓰지 않기 때문에 컴포넌트들끼리의 독립성이 유지되는 것이다.
특정 오브젝트를 직접 가리키지 않고도 원하는 기능을 수행할 수 있는 방법이다.
이러한 Broadcasting 기능은
우리가 중요하게 생각하는
"유니티 이벤트 메서드" 또는 "유니티 이벤트 함수"가 동작하는 원리이기도 하다.
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
게임 오브젝트의 2가지 충돌, OnTriggerXXX, OnCollisionXXX [Unity] (0) | 2022.02.20 |
---|---|
Nullable Type 이용하기 [Unity] (0) | 2022.02.20 |
UnityEvent, UnityAction - 유니티 이벤트, 유니티 액션[Unity] (0) | 2022.02.16 |
Async , Await 키워드, 비동기 프로그래밍(Asynchronous Programming) [Unity] (1) | 2022.02.15 |
Task, Task<TResult> 클래스 , 비동기 프로그래밍 [Unity] (0) | 2022.02.14 |