예측 디버깅과 실시간 디버깅

비주얼 스크립팅은 플레이 모드가 실행되기전 오류를 발생시킬 수 있는 유닛을 예측하여 가리킬 수 있다. 또한 빠진 컴포넌트나 null 참조를 예측하기 위해 그래프를 분석한다. 런타임시에 오류가 발생하면 오류 유닛을 스크립팅 그래프에서 강조 표시로 집어낸다.

예측 디버깅

노드가 제대로 구성되지 않았거나 오류를 일으킬 수 있는 경우 노드는 노란색으로 표시되고 오류를 일으킬 것이 확실할 때는 주황색으로 표시된다 두 경우 모두 정상 상태가 될 때까지 노드를 검사하고 오류 색상을 유지한다.

 

예시: Debug.Log가 콘솔로 출력할 메시지(Message)가 누락되어 있기 때문에 로그 노드가 주황색으로 표시됨.


Debug Log
Debug Log


A + B의 결과를 메시지(Message) 포트에 연결하면 Debug.Log 노드가 정상으로 돌아간다. 그러나, Add 노드는 첫 번째 피연산자 A의 값이 없기 때문에 주황색으로 변한다.


Debug Log
Debug Log


두 피연산자(A, B)에 값이 제공되면 모든 색상은 정상으로 돌아온다.


Debug Log
Debug Log


참고: B 입력 포트는 기본 인라인 값(Inline Value)을 가지므로 연결할 필요가 없다.



Null 참조(Null References)


null 참조 예외(Null Reference Exceptions)는 아주 흔히 발생하는 경우이다. 패러미터(Parameter)가 어떤 값을 받아야 하는데, 아무런 값도 받지 못하게 되면(프로그래밍 용어로 "null"일 때) 발생한다.

비주얼 스크립팅은 "Predict Potential Null References 옵션(Unity > Preferences > Visual Scripting > Flow Graph)" 이 선택된 경우 null 참조(null reference)를 예측하려고 시도한다.

 

예시: GameObject.Destroy 유닛은 인라인 값을 가지지만, 「None」(null)로 설정되어 있어, 오렌지색으로 나타나고 있다.


Game Object Destroy
Game Object Destroy


Null 파라미터를 허용하는 희귀한 유닛이 있긴 하지만, 불행히도 코드베이스 분석에서 비주얼 스크립팅이 이를 알 수 있는 방법이 없기 때문에 주황색으로 나타난다. 이 문제가 반복되는 경우 Predict Potential Null References 옵션을 체크아웃하면 된다.



컴포넌트가 누락된 경우


유닛이 필요한 컴포넌트에 이용되면서 특정 컴포넌트가 없는 게임 오브젝트나 컴포넌트를 패스하는 경우 노드는 노란색으로 경고를 표시한다. 예를 들어, 아래 Add Force 유닛의 각 값은 기본값이 있음에도 불구하고, 비주얼 스크립팅은 소유 게임 오브젝트에 Rigidbody가 없음을 감지하고 경고를 한다. (역자주-rigidbody 컴포넌트가 추가되지 않은 게임 오브젝트에 rigidbody 기능을 하는 Add Force 유닛을 사용하고 있기에 경고를 나타내고 있다.)


Rigidbody Add Force
Rigidbody Add Force

Warning
Warning

참고: 비주얼 스크립팅은 게임 오브젝트에 컴포넌트를 런타임중에 추가할 수도 있기 때문에 주황색 경고로 유닛을 표시하지 않고 있다. 따라서 해당 유닛이 호출되기 전에 필요한 컴포넌트가 추가된다면 크래시(Crash)의 원인을 명확히 찾을 수 없다. 이런 경우가 프로젝트에서 자주 발생한다면 Predict Potential Missing Components debugging (Unity > Preferences > Visual Scripting > Flow Graphs)을 사용해제(disable)하면 된다.


라이브 디버깅


플레이 모드에서는 현재 활성화된 유닛이 푸른색으로 밝게 표시된다. 오류가 발생하면 이를 일으킨 유닛은 빨간색으로 밝게 표시된다.

예: 다음은 결함이 있는 그래프의 예다. 결과는 "Space Bar"를 누를 때 콘솔에 "My 3rd favorite fruit is "나타난다.


Debugging
Debugging



플레이를 선택하고 객체를 클릭했을 때 발생하는 동작은 다음과 같다.


Debugging
Debugging


모든 유닛이 클릭하자마타 푸른색으로 밝게 표시되지만, 콘솔에 오류가 나타난다.


Error
Error


참고: 비주얼 스크립팅은 결함이 있는 노드를 빨간색으로 밝게 표시한다.

흔한 실수로 배열의 인덱스가 1에서 시작한다고 착각하는 것인데 실제로는 0에서 시작한다는 것이다. 스크립팅에서 인덱스(Index)는 항상 제로 베이스(zero-based) 즉, 0부터 시작한다는 것이다. 1은 두번째 인덱스, 2는 세번째 인덱스인 것이다. 세 번째 항목을 얻으려면 필드에 2를 썼써야 한다.


Zero Base
Zero Base


위와 같이 수정하면 그래프가 정상적으로 작동한다.


Console Message
Console Message


 

<원문>

https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-debugging.html

댓글

이 블로그의 인기 게시물

EMACS - 파일 열기, 저장, 도움말

EMACS - 검색 및 바꾸기

EMACS, CLISP, SLIME 설치