UnassignedReferenceException은 Unity에서 변수가 인스펙터에서 할당되지 않은 상태로 접근되었을 때 발생하는 오류입니다. Unity는 변수가 초기화되지 않은 경우 null로 단순히 처리하지 않고, 개발자에게 명확한 경고를 주기 위해 이 예외를 던집니다.
이 코드는 obj라는 GameObject가 인스펙터에서 연결되지 않았기 때문에 UnassignedReferenceException이 발생합니다.
UnassignedReferenceException의 주요 원인
- 인스펙터에서 변수가 할당되지 않음
- public 또는 [SerializeField]로 선언된 변수가 Unity 인스펙터에서 오브젝트로 연결되지 않은 경우.
- 동적으로 찾는 오브젝트가 null
- GameObject.Find() 또는 FindObjectOfType<T>()를 사용했지만, 씬에 해당 오브젝트가 존재하지 않는 경우.
- Prefab의 연결 누락
- 스크립트에서 사용하는 Prefab이 할당되지 않았거나 누락된 경우.
- Destroy된 오브젝트를 참조
- 특정 상황에서 Destroy()된 오브젝트에 접근하려고 할 때.
UnassignedReferenceException 해결법
방법 1: 인스펙터에서 변수에 GameObject 연결
Unity 인스펙터에서 해당 변수에 적절한 오브젝트를 드래그 앤 드롭으로 연결합니다.
- 스크립트를 게임 오브젝트에 추가합니다.
- 스크립트가 추가된 게임 오브젝트를 선택한 상태로 인스펙터를 확인합니다.
- obj변수에 참조할 GameObject를 드래그 앤 드롭으로 연결합니다.
방법 2: null 체크를 통한 방어 코드 작성
변수가 null 상태일 가능성을 고려하여 null 체크를 추가합니다.
방법 3: 동적 초기화 사용
변수를 코드에서 동적으로 초기화할 수도 있습니다.
방법 4: Destroy된 객체 초기화
객체를 Destroy()로 삭제한 경우에는 명시적으로 null로 초기화합니다.
UnassignedReferenceException을 예방하는 팁
- 인스펙터에서 항상 변수 할당 상태 확인
- 스크립트를 작성할 때 인스펙터를 확인하여 필요한 모든 변수가 올바르게 연결되었는지 확인합니다.
- 디버깅으로 오류 추적
- Debug.Log()를 활용해 변수가 null인지 여부를 확인하고 문제를 해결합니다.
- Prefab 관리
- 스크립트에서 사용하는 Prefab이 누락되지 않도록 프로젝트 구조를 정리하고 할당 상태를 점검합니다.
- 코드 작성 시 null 체크 습관화
- 모든 변수는 null 체크를 통해 안정성을 확보합니다.
UnassignedReferenceException은 Unity에서 발생하는 흔한 오류지만, 그 원인과 해결법을 명확히 이해하면 쉽게 극복할 수 있습니다. 이 오류는 단순히 변수를 할당하지 않은 실수에서 비롯되므로, 인스펙터 상태를 꼼꼼히 확인하고, 코드에서 null 체크를 추가하는 등 기본적인 방어 코드를 작성하는 습관이 중요합니다.
'Unity 유니티' 카테고리의 다른 글
Unity 유니티 오류 NullReferenceException ?? 널 오류~ (0) | 2024.12.31 |
---|---|
Unity 유니티 에디터 내의 모든 글자가 깨지거나 보이지 않을 때 해결 방법 (1) | 2024.12.05 |
Unity 유니티 c# 게임 매니저를 활용한 간단한 점수 증가 구현 (1) | 2024.11.29 |
Unity Android 안드로이드 유니티 게임 내에 광고를 삽입하는 방법. 구글 애드몹 Google Admob. 배너 광고 banner (4) | 2024.10.28 |
Unity 6 유니티 6 출시!! 다운로드 및 설치 방법 (3) | 2024.10.23 |
댓글