Unity에서
MonoBehaviour를 상속받은 클래스를new키워드로 생성하면 안되는 이유는 무엇인가요?
MonoBehaviour는 단순한 C# 객체가 아니라 Unity 엔진의 네이티브 코어와 연결된 컴포넌트이기 때문입니다.
new로 생성하면 엔진이 관리하는 생명주기(Lifecycle) 리스트에 등록되지 않아Start,Update같은 메시지를 받을 수 없으며, 물리나 렌더링 같은 엔진의 핵심 기능과 연결되지 않은 '껍데기' 객체가 됩니다.
따라서 반드시AddComponent나Instantiate를 통해 생성해야 합니다.
MonoBehaviour는 C++ 영역의 실체와 연결된 일종의 WrapperStart, Updatenew 객체는 직렬화 워크플로우에서 추적 불가AddComponentInstantiateMonoBehaviour 상속을 제거하고 newScriptableObject=> MonoBehaviour는 엔진이 관리하는 부품
부품(MonoBehaviour)은 규격화된 공정(AddComponent / Instantiate)을 거쳐야만 전력(LifeCycle / Physics)을 공급받을 수 있다