Unity/트러블 슈팅

[Unity] MonoBehaviour 생성자 오류

turbulence93 2025. 5. 20. 20:30

1. 문제 상황

  • MonoBehaviour를 상속받는 Stat 클래스를 Player에서 생성자를 통해 생성하자 오류 발생

2. 원인 분석

  • MonoBehaviour는 Unity 엔진에서 직접 관리하는 컴포넌트
  • MonoBehaviour는 사용자가 new를 통해 직접 생성할 수 없음
  • MonoBehaviour는 생명주기를 통해 순환하는데 게임 도중 MonoBehaviour를 생성자로 생성하면
    awake, start 같은 생명주기가 꼬여서 내부적으로 생성자 사용을 제한

3. 해결 방법

  • 간단하게 GetComponent나 AddComponent를 사용하여 클래스를 관리

4. 개인적인 생각

처음에는 Stat을 생성자로 초기화하면 코드도 깔끔하고, Player에 컴포넌트를 붙이지 않아 가시성도 좋아진다고 생각했다.

하지만 스텟은 StatData를 통해 Json으로 관리하는것이 더 효율적이였고,
Stat의 변화를 직접 확인하기 어렵다는 불편함이 존재하였다.
이번 경험을 통해 무조건 줄이기만 하는것이 좋은 방법이 아니란걸 배웠다.