유니티에서 새로운 C# 스크립트를 생성하면 자동으로 MonoBehavior 클래스가 상속된다.

이 클래스를 계속 거슬러 올라가면 다음과 같은 상속 구조를 발견할 수 있다.

이 네가지 클래스 각각의 기능과 역할은 무엇일까?

먼저 맨 위의 Object부터 살펴보자.
Object 클래스는 모든 유니티 객체의 최상위 클래스로 GameObject, Component와 같은 기본 기능을 포함한다. 공식 문서에 따르면, 유니티가 에디터에서 참조할 수 있는 모든 오브젝트의 기본 클래스 역할을 하며, Object 클래스는 메모리 관리 및 특정 타입의 오브젝트에 대한 참조와 인스턴스화, 파괴를 위한 기본적인 기능을 제공한다.

다음으로, Component 클래스는 모든 컴포넌트의 기본 클래스이다. GameObject에 붙어서 해당 오브젝트의 동작을 제어하고 구성할 수 있다. Transform, RigidBody, Collider 등 다양한 컴포넌트들이 이 Component 클래스를 상속받아서 구현된다.
유니티는 컴포넌트 구조를 이용해 게임을 설계한다.

때문에 기능들을 추가하고 삭제할 수 있는 이 컴포넌트들의 코드 구현체는 모두 이 Component 클래스를 상속받아야한다.

Behaviour 클래스는 범용적인 컴포넌트의 특성과 동작을 정의한다. 이 클래스는 컴포넌트가 가질 수 있는 활성화/비활성화나 게임 오브젝트의 업데이트와 관련된 메소드들을 가지고 있다. 직접 사용하기보단 후술할 MonoBehaviour 클래스를 상속하는데 사용된다.

MonoBehaviour 클래스는 유니티에서 스크립트를 작성하고 사용하는 주요 클래스이다. 게임 오브젝트에 스크립트를 부착하여 Start(), Update(), FixedUpdate() 등 유니티의 생명 주기 함수를 사용해 해당 오브젝트의 동작과 상호작용을 정의하고 제어할 수 있다.
Behaviour 클래스는 Unity의 컴포넌트 구조를 정의하는 범용적인 클래스이며, MonoBehaviour 클래스는 실제로 게임 오브젝트의 동작을 제어하기 위해 사용되는 특수화된 클래스로 정리할 수 있다.