MonoBehaviour
Unity 의 핵심 기반 클래스인 MonoBehaviour 에 대해 정리한다.
MonoBehaviour 는 유니티의 모든 스크립트가 기본적으로 상속받는 클래스이다.
유니티 엔진이 오브젝트의 라이프사이클 ( 생명주기 , Life Cycle )을 제어할 수 있도록 해주는 핵심 클래스이다.
Start( ) , Update( ) , OnCollisionEnter( ) 같은 특수 메서드 ( Lifecycle Event ) 들이 작동하려면 해당 스크립트가 MonoBehaviour 를 상속해야 한다.
작동 원리
유니티는 내부적으로 MonoBehaviour 를 상속받은 스크립트를 감지한다.
오브젝트가 활성화될 때 , 비활성화될 때 , 프레임마다 등 특정 시점에 자동으로 지정된 함수를 호출해준다.
따라서 new 키워드로 직접 생성하지 않고 , AddComponent<T> 를 통해 GameObject에 부착해야 정상 동작한다.
using UnityEngine;
public class PlayerController : MonoBehaviour
{
void Start() // 게임이 시작될 때 1회 실행
{
Debug.Log("플레이어 시작!");
}
void Update() // 매 프레임마다 실행
{
Move();
}
void Move()
{
transform.Translate(Vector3.forward * Time.deltaTime);
}
}

▲MonoBehaviour라는 클래스를 상속받아서 만들어야 GameObject 에 붙일 수 있다.

▲MonoBehaviour를 상속받지 않으면 GameObject 에 붙일 수 없다.
주요 특징
| 항목 | 설명 |
| 상속 필수 | Unity 이벤트 함수 ( Start , Update 등 )를 사용하려면 MonoBehaviour 상속이 필요하다 |
| AddComponent 필요 | new 로 생성하지 않고 , 반드시 GameObject.AddComponent( ) 로 부착해야 작동한다 |
| 비활성화 제어 가능 | enabled 속성으로 스크립트 실행을 일시 중단하거나 재개 가능하다 |
| 코루틴 지원 | StartCoroutine( ) / StopCoroutine( ) 등 코루틴 기능 제공 |
주의할 점
1. 생성자 ( Constructor ) 사용 금지
Unity가 객체를 관리하므로 , 초기화는 반드시 Awak( ) 나 Start( ) 에서 해야 한다
void Awake() { /* 초기화 코드 */ }
2. 직접 인스턴스화 금지 ( new )
var obj = new PlayerController(); // 작동 안 함
gameObject.AddComponent<PlayerController>(); // 작동 한다
3. 정적 클래스에는 사용 불가
정적 클래스나 순수 데이터 클래스에는 MonoBehaviour 상속이 불필요하다

정리
MonoBehaviour 는 유니티 오브젝트의 라이프사이클과 이벤트를 제어하기 위한 기반 클래스이다.
스크립트를 GameObject 에 부착해야만 작동한다.
참고 자료
https://docs.unity3d.com/kr/2021.1/Manual/class-MonoBehaviour.html
'🧊Unity Basic > 라이프사이클' 카테고리의 다른 글
| 라이프사이클 한줄 요약 (0) | 2025.10.15 |
|---|---|
| MonoBehaviour 상속이 안될 때 해결 방법 (0) | 2025.10.13 |
| 라이프사이클 ( Life Cycle ) (0) | 2025.10.13 |