유니티를 사용할 때에 스크립트를 만들면 항상 클래스 옆에 MonoBehavior가 적혀있습니다.

별거 아니겠지 하고 깊게 생각 안 하고 코딩을 했었는데, 다른 사람의 코드를 보면

MonoBehavior 대신 다른 단어가 써져있거나 없었을 때도 보았을 것입니다.

 

MonoBehavior는 왜 있을까?


MonoBehavior의 특징

 

Unity에서 제공하는 모든 스크립트가 상속되어 있는 클래스입니다. 유니티에서 정말 많이 사용하는 것 중에서

대표적인 것으로는 Awake, Start, Update 등이 MonoBehavior가 있어야 사용이 가능합니다.

 

MonoBehavior의 상속받는 대상은 [MonoBehavior -> Behavior -> Component -> Object] 입니다.

 

유니티에서 스크립트를 생성하면 기본적으로 MonoBehavior가 달려 있는 이유가 바로 이 때문인데,

의미는 MonoBehavior 클래스를 상속하겠다. 입니다. 이걸 더 쉽게 풀어서 말하자면

이 클래스에서 유니티에서 제공하는 스크립트의 기능을 사용하겠다. 라는 뜻입니다.

 

여기서 MonoBehavior에서 사용 가능한 함수들의 종류를 볼 수 있습니다.

https://docs.unity3d.com/kr/530/ScriptReference/MonoBehaviour.html

 

UnityEngine.MonoBehaviour - Unity 스크립팅 API

MonoBehaviour is the base class from which every Unity script derives.

docs.unity3d.com


 

MonoBehavior가 상속된 클래스의 특징

 

1. 스크립트 파일 자체로는 사용이 불가능하고, GameObject의 Component로 등록을 해야 사용을 할 수 있습니다.

(이와 마찬가지로 MonoBehavior을 상속받지 않는 클래스라면 Component로 등록이 불가능합니다.)

 

2. 다른 클래스에서 해당 스크립트를 사용하고 싶다면 GetComponent<>함수를 사용해야 합니다.

 

3. new로 동적 할당을 할 수 없습니다.

- 만약 동적할당을 하고 싶다면 ExampleSrc exSrc = 게임오브젝트.AddComonent<exsrc>();를 사용하면 됩니다.

 


MonoBehavior 상속된 클래스 사용 주의사항

 

Update, FixedUpdate 등 프레임 단위로 빠르게 반복으로 실행하는 함수는 안에 아무런 내용이 없더라도 실행되어

성능에 안 좋은 영향을 끼칩니다. 만약 사용하지 않는다면 무조건 삭제를 해주어야 성능 향상에 도움이 됩니다.