언어:
페이지 정보
태그:
엔진 버전:
언리얼 엔진

블루프린트 디버깅 예제

언리얼 엔진

블루프린트 작업시 계획했던 대로 작동하지 않는 경우가 생길 수 있습니다. 이러한 문제 진단을 위해, 블루프린트 비주얼 스크립팅 툴에는 디버거가 내장되어 있으며, 그 중 가장 강력한 기능 중 하나가 그래프의 노드에 Breakpoint 중단점을 추가하는 기능입니다. 그래프의 노드에 중단점을 추가하면, 에디터에서 게임을 정상적으로 플레이( 또는 시뮬레이트)하다가, 중단점을 추가해 둔 노드에 도달하면 게임이 일시정지되고 그래프의 그 노드로 점프하여 스크립트를 한 단계씩 진행해 보며 어디서 문제가 생기는지 확인해 볼 수 있습니다.

또 한가지 유용한 디버깅 기능은 Watch Values, 감시값입니다. 블루프린트의 (하나 이상) 변수를 감시 하도록 마킹하면, 게임 실행 도중 블루프린트 안에서 그 값을 확인할 수 있게 됩니다. 변수가 실시간으로 변하면서 오류가 어디서 오는지 시각적으로 확인할 수 있기에, 변수에 대한 계산이나 값이 잘못된 경우를 디버깅할 때 필수적입니다.

여기서는 블루프린트 디버깅 준비 방법은 물론 문제 진단에 사용되는 기타 방법들에 대해서도 알아보겠습니다.

블루프린트 디버깅 관련 상세 정보는 블루프린트 디버깅 문서를 참고하세요.

디버깅 켜기

블루프린트 디버깅을 켜려면, 레벨에 있는 어느 블루프린트 인스턴스를 디버깅할지 먼저 지정해야 합니다.

블루프린트 안에서 Debug Object (디버그 오브젝트) 드롭다운을 클릭한 다음, 디버거에서 확인하고자 하는 인스턴스를 선택하면 됩니다.

DebugHowTo1.png

오브젝트를 선택한 이후에는, 확대경 아이콘을 클릭하여 레벨의 그 오브젝트로 점프할 수 있습니다.

DebugHowTo2.png

블루프린트를 다른 창에 띄워둔 상태로 에디터에서 플레이해 보면, 스크립트 실행 부분의 선이 요동치는 것을 볼 수 있을 것입니다.

위 예제에는, 레벨에 두 개의 화염 이펙트 블루프린트가 있는데, 각기 비활성화 시간이 다르게 설정되어 있습니다. Event Begin Play (게임 실행)시 Delay 노드를 사용하여 화염을 Deactivate 시키고, 변수에 지정된 시간 이후 그에 관련된 사운드 이펙트가 재생됩니다.

게임이 실행되면 왼쪽 창에 스크립트가 실행되는 것을 볼 수 있습니다 (요동치는 선이 빨강 Event Begin Play 노드를 떠나 Delay 노드로 들어갑니다). 지정된 시간 이후 요동치는 부분이 화염 이펙트 중 하나를 비활성화시키는 데 사용되는 세 번째 노드로 들어가는 것이 보입니다.

중단점

블루프린트 스크립트에 중단점 을 추가하려면, 실행 노드에 우클릭 한 다음 중단점 추가 를 선택하면 됩니다.

DebugHowTo3.png

우클릭 방법 대신 노드를 선택한 다음 F9 키를 누르는 것으로도 중단점을 토글할 수 있습니다.

노드에 중단점이 추가되면, 노드의 좌상단 구석에 빨강색 원이 나타납니다.

DebugHowTo4.png

게임플레이 도중 스크립트가 이 시점까지 도달하면, 게임이 일시정지되고 이 노드에 초점이 맞춰집니다.

DebugHowTo7.png

중단점을 임시로 꺼서 기존에 중단점을 설정한 노드 기록을 유지하는 것도 가능합니다.

DebugHowTo6.png

꺼진 중단점이 설정된 노드는, 그 노드까지 실행이 도달해도 중단되지 않습니다.

디버그 메뉴에는 모든 중단점켜기/끄기/삭제 하는 옵션도 있습니다.

DebugHowTo18.png

디버깅 컨트롤

블루프린트가 중단점에 도달하면, 블루프린트 스크립트 조작을 위해 사용할 수 있는 몇 가지 컨트롤 옵션이 추가로 생깁니다.

DebugHowTo9.png

위에서 왼쪽에서 오른쪽 순으로, 재개 는 에디터에서 게임플레이를 재개시키고 디버깅 모드를 빠져나갑니다. 프레임 스킵 은 게임플레이를 한 프레임 전진시켜 주는 반면, 중지 는 에디터에서 플레이 세션을 완전히 중지시킵니다. 노드 찾기 옵션은 게임플레이 세션에서 현재 활성화된 노드로 점프시켜 주는 반면, 단계 는 현재 실행 흐름의 다음 노드로 한 단계 진행합니다.

노드에 중단점을 배치한 다음 스크립트를 한 단계씩 진행시키는 프로세스를 시작할 때, 현재 실행 흐름의 끝에 도달하면, 자동으로 게임플레이에 돌아갑니다.

일반적인 디버깅 작업방식은, 노드에 중단점을 추가한 다음, 스크립트를 단계 별로 진행시켜 어디가 잘못되었는지 알아냅니다. 역방향 단계별 진행은 불가능하니, 중단점을 놓을 때는 이 점을 염두에 두고 문제 발생 전에 놓아서 문제 발생 이후 어떤 일이 생기는지 알 수 있도록 하십시오.

감시값

변수의 값을 감시하려면, 변수에 우클릭 한 다음 이 값 감시 옵션을 선택합니다.

DebugHowTo11.png

변수를 감시하기로 선택한 후에는, 변수가 접근되는 곳이면 어디든 확대경 아이콘이 나타납니다.

DebugHowTo12.png

변수 위에 떠다니는 말풍선에 변수의 현재 값이 나타나는 것도 확인할 수 있습니다. 에디터에서 플레이할 때, 이 변수가 변경되면 말풍선에도 반영되어, 변경이 되는지와 그 현재 값을 확인할 수 있습니다. 변수 감시 옵션은 수치 기반 변수에만 한정되는 것이 아니라, 어느 변수든 감시하여 그 값을 확인하는 것이 가능합니다 (아래에서 보듯이 부울 변수도 감시하여 그 현재 상태를 확인할 수 있습니다).

DebugHowTo10.png

디버그 메뉴에서 모든 감시값 삭제 를 통해 모든 변수의 감시 상태를 제거할 수도 있습니다.

DebugHowTo18.png

블루프린트 디버거 탭

/ 개발자 툴 에서 열 수 있는 블루프린트 디버거 를 통해 블루프린트를 디버깅할 수도 있습니다.

DebugHowTo13.png

에디터에서 플레이중이지 않을 때, 블루프린트 디버거에는 할당된 중단점이나 감시중인 변수가 표시됩니다 (아래 노랑 박스).

DebugHowTo14.png

씬에 있는 액터들을 Shift 클릭하여 블루프린트 디버거 탭에 다수의 블루프린트를 추가할 수 있습니다.

에디터에서 플레이( 또는 시뮬레이트)할 때, 디버거의 하단이 채워지는데, 이 부분은 실행 추적 부분입니다.

DebugHowTo15.png

실행된 명령들이 명령 내려진 순서대로 (위쪽이 최근) 전부 나열되는 로그입니다.

중단점에 걸리면, 이 글에 언급된 디버깅 컨트롤 대로 블루프린트 디버거 탭 안에서 바로 접근 가능합니다.

컴파일 오류

블루프린트 컴파일시 컴파일 오류 (아래 노랑 박스)가 뜨는 이유는 여러가지 있을 수 있습니다.

DebugHowTo19.png

이러한 상황이 발생하는 경우, 게임 플레이를 시도해 보면 아래와 비슷한 메시지가 보일 것입니다.

DebugHowTo23.png

블루프린트에 오류가 있으면 레벨 에디터 뷰포트에도 반영됩니다.

DebugHowTo24.png

이러한 경우, 어떤 일이 벌어지는지 디버깅 방법을 통해 제대로 알아내지 못할 수가 있습니다. 컴파일하여 오류가 난 블루프린트 안을 보면, 오류가 난 노드에 표시가 되어 있어 문제가 어디서 발생하는지 파악하는 데 도움이 됩니다.

DebugHowTo20.png

컴파일러 결과 창을 통해서도 오류가 난 이유에 대한 부가 정보를 알 수 있습니다.

DebugHowTo21.png

컴파일러 결과 창은 오류가 생길 때마다 자동으로 뜹니다. 확대경 클래스를 클릭하면 오류 위치로 점프하여 문제가 되는 노드를 확인할 수 있습니다. 문제 해결을 돕고자 글로도 오류에 대한 설명이 표시됩니다.

태그