1. 문제 상황
- MonoBehaviour를 상속받는 Stat 클래스를 Player에서 생성자를 통해 생성하자 오류 발생
2. 원인 분석
- MonoBehaviour는 Unity 엔진에서 직접 관리하는 컴포넌트
- MonoBehaviour는 사용자가 new를 통해 직접 생성할 수 없음
- MonoBehaviour는 생명주기를 통해 순환하는데 게임 도중 MonoBehaviour를 생성자로 생성하면
awake, start 같은 생명주기가 꼬여서 내부적으로 생성자 사용을 제한
3. 해결 방법
- 간단하게 GetComponent나 AddComponent를 사용하여 클래스를 관리
4. 개인적인 생각
처음에는 Stat을 생성자로 초기화하면 코드도 깔끔하고, Player에 컴포넌트를 붙이지 않아 가시성도 좋아진다고 생각했다.
하지만 스텟은 StatData를 통해 Json으로 관리하는것이 더 효율적이였고,
Stat의 변화를 직접 확인하기 어렵다는 불편함이 존재하였다.
이번 경험을 통해 무조건 줄이기만 하는것이 좋은 방법이 아니란걸 배웠다.
'Unity > 트러블 슈팅' 카테고리의 다른 글
| [Unity] 인벤토리 - 슬롯 선택 동작 오류 (0) | 2025.05.30 |
|---|---|
| [Unity] 발사체 반사 방향이 이상하던 문제 (0) | 2025.05.21 |
| [Unity] 타일맵 크기 변경 오류 (0) | 2025.05.16 |
| [Unity] AnyState 전이로 인한 애니메이션 멈춤 현상 분석 (0) | 2025.05.14 |
| [Unity] Animator 반복 재생 프레임 끊김 (0) | 2025.05.13 |