
오늘은 유니티로 흔히 발생하는 오류 문구중에 배열의 IndexOutOfRangeException 오류에 대해서 포스팅 해보겠습니다. 배열에 있는 데이터를 호출하려고 할 때 나타나는 오류로 호출한 인덱스가 배열의 범위를 벗어날 때 주로 나타납니다.
1. 원인

이 오류가 나타나는 이유는 배열에 값을 입력하거나 호출할 때 존재하지 않는 인덱스 번호에 값을 넣으려고 할 때 나타납니다. 주로 배열에 반복문을 비교조건을 잘못 정의했을 때 보입니다.
하지만 배열의 크기는 5이므로 numbers는 [0]~[4]까지 있는 반면 numbers.Length는 5기 때문에 총 6번을 반복하게 됩니다. 마지막에 존재하지 않는 인덱스 넘버 numbers[5]에 값을 넣으려고 하기 때문에 해당 오류가 발생합니다.
2. 해결

해결방법은 호출하려는 인덱스 범위를 다시 재정의 해주면 됩니다.
Length를 통해서 실제 배열의 크기를 벗어나는 반복을 시도하는 것이기 때문에
기존의 i <= numbers.Length;를 i < numbers.Length;로 수정해서 i = 4까지만 반복하게 하여 0~4가 대응하게 하면 됩니다.

간단한 예문을 통해서 배열의 IndexOutOfRangeException 오류의 원인과 해결방법을 알아봤습니다. 예문이 간단하기 때문에 쉽게 해결됐지만 실제로는 i와 쓰는 반복문만 있는게 아니기 때문에 다른 상황에서도 문제가 발생할 수 있습니다.
하지만 결론적으로는 배열에 값을 입력하거나 호출하려는데 없는 인덱스 번호에다가 하려고 할 때 나타나는 오류이기 때문에 배열크기를 조정하거나 호출범위를 다시 한 번 살펴보면 되겠습니다.