-
[Unity] List가 들어있는 클래스에서 Instantitate를 하면 NullReferenceException: Object reference not set to an instance of an object쾌락없는 책임 (공부)/Unity 2022. 3. 26. 15:54반응형
스크립트 상황
스크립트 GenomManager에서 Genom클래스를 가지는 오브젝트들을 Instantitate를 하면 계속해서 "NullReferenceException: Object reference not set to an instance of an object" 가 나오는 문제가 있었습니다.
<Genom 스크립트>
public class Genom : MonoBehaviour { public List<bool> GenomList; public void InitGenom(int genomLength) { for(int i = 0; i < genomLength; i++) { GenomList.Add(Random.value > 0.5f); } } }
<GenomManager 스크립트>
public class GenomManager : MonoBehaviour { ... List<Genom> subjects; void Start() { MakeGenoms(); } private void MakeGenoms() { Vector3 position = new Vector3(0, 0, 0); for(int xPos = 0; xPos < 8; xPos++) { position.x = xPos * distanceBetweenObjects; for(int zPos = 0; zPos < 8; zPos++) { subjects.Add(Instantiate(GenomPrefab, position, Quaternion.identity).GetComponent<Genom>()); subjects[subjects.Count - 1].InitGenom(genomLength); position.z += distanceBetweenObjects; } position.z = 0; } }
문제 해결 : List 를 제대로 초기화 하자
문제의 원인은 List에 대한 숙련도가 떨어져서 그렇습니다. 두 클래스, GenomManager에는 subjects 리스트가, Genom에는 GenomList가 있는데 이것들을 초기화 하지 않은채 선언만 해줬기 때문입니다.
<GenomManager> List<List<bool>> dominantGenoms = new List<List<bool>>(); <Genom> public List<bool> GenomList = new List<bool>();
이런 식으로 new List를 통해서 초기화를 해줘야 NullReferenceException: Object reference not set to an instance of an object 오류가 안나오게 됩니다.
반응형'쾌락없는 책임 (공부) > Unity' 카테고리의 다른 글
[Unity] NullReferenceException: Object reference not set to an instance of an objectUnityEditor.PropertyEditor.DrawEditors 해결방안 1 (0) 2022.04.18 [Unity] 스테이지 클리어 조건 Delegate로 구현 (0) 2022.03.27 유니티 애드몹 적용 중 Gradle failed 대응해보기 (0) 2022.01.25 유니티 2D에서 파쿠르 기능 구현하는 일지 (0) 2021.11.24 유니티 Stopwatch로 시간 측정하기 (0) 2021.09.14