NullReferenceException은 Unity에서 가장 자주 발생하는 오류 중 하나입니다. 이 오류는 코드에서 객체(Object)에 접근하려고 했지만, 해당 객체가 null(비어있는 상태)인 경우에 발생합니다. 즉, 변수에 참조된 객체가 없는데 해당 변수의 속성이나 메서드에 접근하려고 할 때 이 예외가 발생합니다.
위 코드에서 obj라는 GameObject가 null인 상태인데, obj.transform.position에 접근하려고 하면 NullReferenceException이 발생합니다.
자주 발생하는 원인
- 오브젝트가 에디터에서 할당되지 않음
- public 또는 [SerializeField]로 선언된 변수를 Unity 인스펙터 창에서 오브젝트에 연결하지 않았을 경우.
- 스크립트에서 동적으로 찾는 객체가 null
- GameObject.Find()나 FindObjectOfType<T>() 등으로 객체를 찾을 때 대상이 존재하지 않을 경우.
- 객체가 파괴되거나 삭제된 후 접근
- Destroy()로 삭제된 객체를 참조하려 할 때.
- 잘못된 경로 또는 설정
- Resource에서 로드하거나 Prefab을 Instantiate할 때 잘못된 파일 경로로 객체를 불러오는 경우.
해결 방법
1. 인스펙터에서 할당 확인
- 변수에 할당된 값이 있는지 인스펙터에서 확인하고, 누락된 경우 올바른 오브젝트를 드래그 앤 드롭으로 연결합니다.
2. null 체크 추가
- 코드에서 객체가 null인지 확인하는 방어 코드를 추가합니다.
3. Awake 또는 Start에서 동적 참조 초기화
- 동적으로 오브젝트를 찾을 때 null 상태가 되지 않도록 초기화를 보장합니다.
4. Prefab 인스턴스가 null인지 확인
- Instantiate()로 생성된 객체를 사용하기 전에 null 체크를 수행합니다.
5. Destroy된 객체 사용 방지
- Destroy() 이후 객체를 null로 초기화하거나 null 체크를 추가합니다.
NullReferenceException은 Unity 개발에서 흔히 접하는 오류지만, 인스펙터를 통한 할당 여부 확인, null 체크 코드 추가, 동적 참조의 초기화 등을 통해 쉽게 방지할 수 있습니다. 특히 디버깅을 잘 활용해 원인을 파악하고 위의 방법을 적용하면 오류를 효과적으로 해결할 수 있습니다.
'Unity 유니티' 카테고리의 다른 글
Unity 유니티 오류 UnassignedReferenceException이란? (1) | 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 |
댓글