프로그래밍/Unity

MonoBehaviour 를 상속받은 Class 주의점

selinatsu 2024. 9. 18. 17:41

C# 에만 익숙해있다가 유니티를 접하게 되면

class 를 인스턴스화 하는데 new 를 사용하지 않는다는 사실에 당황하게 된다.

 

유니티의 경우 생성한 모든 GameObject 들은 Component 기반이다.

그래서 필요한 Component 를 해당 GameObject에 추가해서 사용하게 된다.

스크립트도 예외는 아니어서 Component 로 추가하고 제어한다. 

그리고 이러한 구조가 가능한 이유가 MonoBehaviour class 를 상속받았기 때문이다.

 

MonoBehaviour 를 상속받은 class 는 유니티가 동작하는 방식에 따라 처리되기 때문에 외부에서 new 로 할당하게 되면 정상동작하지 않으니, 내부에서 어떤 순서로 유니티가 동작하는지 완벽하게 파악한 초절정 고수가 아니라면 사용하지 말자. 일반적으로 권장되지 않는 방법이다.

 

유니티와 무관한 간단한 C# 예제 코드를 짤 때, GameObject 를 생성해서 C# 스크립트를 컴포넌트로 추가하고 해당 스크립트를 component로 얻어와서 class 기능을 확인하는 것이 귀찮을 때가 있다.

이럴 때는 생성된 스크립트에서 MonoBehaviour 를 지워주면 된다.