오류 발생 개요

유니티 튜토리얼을 진행 중 내 프로그램에 오류가 쌓이기 시작했다.

일단 이번 건은 발사체를 발사하는 과정에서 인덱스를 찾을 수 없는 문제다.

사실 발사체를 구성하는 코드를 작성할 때는 문제가 없었다.

그 뒷 내용을 진행하다 보니 발사체에 문제가 생긴 것이다.

항상 이런 때가 미치게 만드는 것 같다.

오류 문구

일단은 하기 내용은 유니티에서 뱉어주는 오류다.

인덱스의 배열을 벗어났다고 한다.

밑에 주절주절 알려주는대로 따라가보자.

IndexOutOfRangeException: Index was outside the bounds of the array.
ProjectileManager.ShootBullet (RangeWeaponHandler rangeWeaponHandler, UnityEngine.Vector2 startPosition, UnityEngine.Vector2 direction) (at Assets/Scripts/Manager/ProjectileManager.cs:21)
RangeWeaponHandler.CreateProjectile (UnityEngine.Vector2 _lookDir, System.Single angle) (at Assets/Scripts/Weapon/RangeWeaponHandler.cs:73)
RangeWeaponHandler.Attack () (at Assets/Scripts/Weapon/RangeWeaponHandler.cs:65)
BaseController.Attack () (at Assets/Scripts/Entity/BaseController.cs:141)
BaseController.HandleAttackDelay () (at Assets/Scripts/Entity/BaseController.cs:134)
BaseController.Update () (at Assets/Scripts/Entity/BaseController.cs:54)

디버그 진행

우선 (at Assets/Scripts/Manager/ProjectileManager.cs:21)에 디버그를 찍어보자.

image-20250217195045880

오류 난 부분에 포인트를 찍으니 당연히 더 진행되지 않는다.

projectilePrefabs는 유니티 에디터에서 Prefab들을 설정하는 배열 공간이다.

원래라면 내가 지정한 Prefab이 표시가 되야하는데, 그렇지 못하고있다.

그럼 그 배열 공간을 한번 보러가자.

Prefabs 배열 확인

image-20250217195506833

무슨 이유인지 몰라도 내가 지정해놨던 Prefab들이 빠져버렸다.(종종 빠지던데 왜 그런지는 ㅁㄹ?)

탄환으로 사용할 Prefab이 아무 것도 없으니, 유니티가 그렇게 오류를 토해낼 수 밖에..

문제 해결

image-20250217195643862

Prefab을 넣어 주는 걸로 발사체 오류는 해결되었다.

왜 안돼지? 하며 우왕좌왕 코드만 보지 말고 디버그를 찍어보자.

실수든 문제든 바로 나오는것 같다.


유니티에서 IDE를 사용해 디버그 하는 방법

유니티와 Visual Studio 연동 확인

브레이크포인트를 사용하려면 유니티와 Visual Studio가 정상적으로 연동되어야 한다.

  1. 유니티 에디터에서 Edit > Preferences로 이동.
  2. External Tools(외부 도구) 탭을 클릭.
  3. External Script Editor 옵션이 Visual Studio (Community, Professional, Enterprise) 중 하나로 설정.
  4. 아래에 있는 Generate all .csproj files 체크박스를 활성화
  5. Visual Studio에서 Unity에 연결(Attach to Unity) 버튼 사용.
  6. 유니티 플레이 버튼 실행.
  7. 설정된 브레이크포인트로 진행되도록 유도.

댓글남기기