본문 바로가기

게임 개발 공부 정리

[Unity] 호발성 버그, 기본 디버깅 - 20 09 18~19

반복문 작성 시 주의사항

유니티 내에서의 반복문은 조심히 사용해야만 한다.

실수로 무한루프 반복문을 설계하고, 스크립트를 실행하게 되면 과부하가 걸려 유니티를 강제 종료해야 되기 때문에 프로젝트가 저장이 안 돼있다면, 치명적이게 된다.


버그와 디버깅

버그

콘솔에 에러 메시지가 뜨게 되면 더블 클릭하여 에러가 발생된 코드의 줄로 이동할 수 있다.

 

컴파일 에러(Compile Error): 게임을 컴파일 하는 도중에 발생하는 에러이므로 게임의 실행 조차 할 수 없게 된다.

런 타임 에러(Runtime Error): 게임을 실행하는 중에 발생하는 버그이다. 발생 이유가 복잡할 수 있어서 꼼꼼히 살펴봐야 한다.

로직 에러(Logic Error): 표면적으로는 에러가 없지만, 게임 상에서 의도치 않은 결과를 낸다. 

 

디버깅

버그를 제거하는 과정이다.

 

방법 1. Debug.Log()로 값의 변화를 확인하면서 오류를 찾아낸다.

 

방법 2. 프로그램 실행 도중 선택한 줄이 작동하는 순간이 오면 프로그램을 멈추고 현재 상태의 값을 확인하게 해주는 중단점 기능을 사용한다. 

맨 왼쪽의 구역을 마우스로 클릭하여 중단점을 지정할 수 있다.

 

코드에 중단점 구간을 지정하고, 게임을 실행시키면 된다.

중단점 디버깅으로 게임이 멈추었을 때, 계속 실행하고 싶으면 상단의 프로시저 나가기 (단축키: Shift + f11)를 클릭하여 진행시킬 수 있다.


에디터 연결 문제 해결법

자동 완성 기능 보기: ctrl + space

 

일반

에디터 연결에 문제가 생기면 코드 에디트시 자동완성, 색깔 커서 설명 등이 뜨지 않게 된다.

[Unity Menu] - Edit - Preferences - External Tools - External Text Editor > 사용 하는 툴로 다시 설정해준다.

 

비쥬얼 스튜디오를 직접 설치하였을 경우

도구 - 도구 및 기능 가져오기 - Visual Studio Installer - Unity를 사용한 게임 개발 툴 설치


Debug 사용시 모호한 참조 오류 해결법

3, 4번줄에 Using 유니티 엔진과 시스템 다이나스틱스를 같이 적은 후,  Debug를 하면 그 둘 사이에 모호한 참조가 되어 컴파일 에러가 뜨므로 시스템 다이나스틱스를 지워주어야 한다.

 

계속 문제가 있다면

Using Debug = UnityEngine.Debug;

로 선언을 해주면 오류가 나지 않게 된다.


NullReferenceException 오류

Null : 아무값도 가지고 있지 않는 공허한 값

Null 에러는 런타임 오류에 해당된다.

NullReferenceException 오류는 다양한 원인이 존재한다.

 

1. 선언한 변수를 초기화(할당)하지 않았을때

 

2. 다른 오브젝트에 가져올 컴포넌트가 없어서

주로 게임 실행 중에 오브젝트끼리 충돌할때 발생한다.


IndexOutOfRangeExcpetion 오류 해결법

IndexOutOfRangeExcpetion(범위 밖의 주소 예외)는 배열, 리스트 범위를 넘어서 접근할 때 발생한다.

for문의 한계 범위를 상수로 줄때 잦게 발생한다.

한계 범위의 값을 arr.Length 변수로 준다.