Unity) 발사체 오류
오류 발생 개요
유니티 튜토리얼을 진행 중 내 프로그램에 오류가 쌓이기 시작했다.
일단 이번 건은 발사체를 발사하는 과정에서 인덱스를 찾을 수 없는 문제다.
사실 발사체를 구성하는 코드를 작성할 때는 문제가 없었다.
그 뒷 내용을 진행하다 보니 발사체에 문제가 생긴 것이다.
항상 이런 때가 미치게 만드는 것 같다.
오류 문구
일단은 하기 내용은 유니티에서 뱉어주는 오류다.
인덱스의 배열을 벗어났다고 한다.
밑에 주절주절 알려주는대로 따라가보자.
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)
에 디버그를 찍어보자.
오류 난 부분에 포인트를 찍으니 당연히 더 진행되지 않는다.
projectilePrefabs
는 유니티 에디터에서 Prefab
들을 설정하는 배열 공간이다.
원래라면 내가 지정한 Prefab
이 표시가 되야하는데, 그렇지 못하고있다.
그럼 그 배열 공간을 한번 보러가자.
Prefabs 배열 확인
무슨 이유인지 몰라도 내가 지정해놨던 Prefab
들이 빠져버렸다.(종종 빠지던데 왜 그런지는 ㅁㄹ?)
탄환으로 사용할 Prefab
이 아무 것도 없으니, 유니티가 그렇게 오류를 토해낼 수 밖에..
문제 해결
Prefab
을 넣어 주는 걸로 발사체 오류는 해결되었다.
왜 안돼지? 하며 우왕좌왕 코드만 보지 말고 디버그를 찍어보자.
실수든 문제든 바로 나오는것 같다.
유니티에서 IDE를 사용해 디버그 하는 방법
유니티와 Visual Studio 연동 확인
브레이크포인트를 사용하려면 유니티와 Visual Studio가 정상적으로 연동되어야 한다.
- 유니티 에디터에서
Edit > Preferences
로 이동. - External Tools(외부 도구) 탭을 클릭.
External Script Editor
옵션이 Visual Studio (Community, Professional, Enterprise) 중 하나로 설정.- 아래에 있는 Generate all .csproj files 체크박스를 활성화
- Visual Studio에서
Unity에 연결(Attach to Unity)
버튼 사용. - 유니티 플레이 버튼 실행.
- 설정된 브레이크포인트로 진행되도록 유도.
댓글남기기