유니티에서 C#스크립트를 하나 만들어보자. 그럼 아래 사진처럼 기본 내용이 만들어질 것이다. 그런데 항상 기본적으로 MonoBehaviour를 상속한다. MonoBehaviour이 도대체 무엇이길레 상속하는 것일까?
이 MonoBehaviour를 지워보면 어떤일이 일어날까? 아래 사진을 보면 지우기 전에는 "Start는 Update 메서드가 처음으로 호출되기 바로 전에 호출됩니다." 라고 뜨지만 지우고 나면 "프라이빗 맴버 "NewBehaviourScript.Start()"를 사용하지 않습니다." 라는 경고문이 뜬다.
MonoBehaviour를 상속하는 동안에는 Start를 Update를 호출하기 전에 처음 한번 호출되는 유니티의 메서드로 인식하지만 상속을 하지 않을때는 하나의 프라이빗 맴버 함수로 본다. MonoBehaviour이 없다면 Start는 더이상 우리가 알던 Start가 아닌 비어있는 함수가 돼버리는 것이다. 이는 Update문도 마찬가지다.
MonoBehaviour은 이렇게 유니티에서 사용하는 Start, Update, FxiedUpdate 등 유니티 사이클에 사용되는 메서드부터 코루틴, 컴포넌트와 오브젝트 상호작용 등을 할 수 있게 이러한 것들을 미리 선언 해둔 것이다. 그리고 이 MonoBehaviour를 상속받음에 따라 우리가 원하는 유니티의 기능들을 사용할 수 있는 것이다.
유니티 공식문서에서는 이를 더 상세히 나타내고 있다. 이곳에서 MonoBehaviour에 어떠한 것들이 구현되어 있는지 알 수 있다.
https://docs.unity3d.com/kr/2020.3/ScriptReference/MonoBehaviour.html
나는 MonoBehaviour이 어떻게 생겼는지 궁금해 졌다. 아래 내용은 중요한 내용은 아니라 굳이 안봐도 무방하다.
위 사진처럼 MonoBehaviour에 마우스를 가져다 대고 클릭해보자. 그럼 MonoBehaviour에서 미리 선언해둔 함수들을 볼 수 있다. 아래 사진은 그렇게 해서 들어가본 모습이다. 여기에서는 Coroutine, Invoke에 관련한 함수들을 미리 선언한 것을 볼 수 있다. 또한 MonoBehaviour은 Behaviour를 상속하고 있는것을 알 수 있다. 여기에서 해당 함수 왼쪽에 ...을 더블클릭 하면 해당 함수의 설명을 볼 수 있다. 궁금하면 직접 들어가서 찾아보자.
같은 방법으로 Behaviour 에 들어가면 Component를 상속받고 있고 Component는 Object를 상속받고 있는 것을 볼 수 있다. 여기에서 우리가 평소에 쓰던 익숙한 함수들을 볼 수 있다. 물론 이 글에서 이것들에 대해 하나하나 자세히 다루진 않을 것이다. 시간이 남으면 직접 들어가서 유니티에 어떤 함수들이 존재하고 어디에 쓰이는 것인지 알아보면 도움이 될 수 있을 것이다.
'Unity 분석' 카테고리의 다른 글
Enum의 활용 (0) | 2023.01.07 |
---|---|
코루틴의 작동방식 (0) | 2023.01.06 |
메모리 구조와 유니티 - GC에 대한 심층적 이해 (0) | 2023.01.05 |
GameObject.Find() (0) | 2023.01.04 |
물체가 이동하면서 얇은 벽을 통과하는 경우 (0) | 2023.01.04 |