라벨이 3. 스크립트 그래프인 게시물 표시

스크립트 그래프를 이용한 게임의 흐름 작업

이미지
스크립트 그래프(Script Graphs)는 프로젝트에서 상호작용(Interaction)을 만드는 주요 도구다. 유닛(Unit) 기반 액션(Actions)과 값(Values)을 사용는 이 그래프는 매 프레임(Frame)마다 또는 어떤 이벤트(Event)가 발생했을 때 세부적으로 정해진 순서대로 로직을 실행한다.   본 챕터에서는 아래의 요약 내용들을 다루게 된다. 레고 블럭같은 유닛들 유닛(Units)은 비주얼 스크립팅에서 처리하는 가장 기본적인 요소다. 유닛은 스크립트 그래프내에서 입력과 출력 포트가 있는 노드(nodes)로 표시된다. 유닛의 연결 유닛의 연결은 연결 가능한 출력 포트와 입력 포트간에만 이루어 지도록 되어있다.(역자주-연결 불가한 경우 자동적으로 비활성화되어 연결이 이루어 지지 않는다.) 릴레이션(Relations)을 이용한 디버그 릴레이션(Relations)은 각 유닛의 고유한 형태로 사전 정의되어(predefined) 있어서 수정할 수 없지만, 유닛(Unit)들의 각 포트(Port)간에 의존관계를 이해하는데 유용하다. 당연히 비주얼 스크립팅 역시 예측 디버깅(Predictive...

스크립트 작성하기

이미지
유닛(Units)은 비주얼 스크립팅이 처리하는 가장 기본적인 요소다.   다른 비주얼 스크립팅 언어에서는 이를 노드(Node) 또는 작업(Action)이라고 부른다.  유잇은   입력과 출력 포트를 가지고 있으며, 스크립트 그래프(Script Graph)에서 "블록(Blocks)"처럼 시각적 그래픽으로 표현된다. Start Event 유닛과 Update Event 유닛 유닛(Units) 유닛은 비주얼 스크립팅에서 계산을 처리하는 가장 기본적인 요소다.   유닛들은 매우 다양한 일들을 할 수 있다. 예를 들어, 이벤트(Event)를 듣고(Listen, 역자주-받는다 수신한다는 의미), 변수(Variable)의 값(Value)을 얻고(Get), 컴포넌트(Components)나 게임 오브젝트(Game Objects)에 있는 메소드(Methods)를 호출(invoke)한다. 유닛들은 실행되는 순서를 나타내는 연결(Connections)을 가지고 있으며, 다른 유닛으로부터 값을 전달받아 전송하기도 한다. 유닛 생성하기 기본적으로 비주얼 스크립팅에는 23,000개 이상의 유닛들이 있다.   여기에는 전체 Unity 스크립팅 API뿐만 아니라 사용자 지정 스크립트(Custom Scripts) 및 타사 플러그인(Third Party Plugins)의 모든 메서드(Methods)와 클래스(Classes)까지 포함된다.  Math, Logic, Variables, Loops, Branching, Events, Coroutines을 위해 추가된 유틸리티 유닛들도 있다.   유닛은 퍼지 파인더(Fuzzy Finder)라는 간단하고 검색이 가능한 생성 메뉴에 잘 정리되어 있다.   퍼지 파인더를 띄우려면 편집창의 아무 빈곳에 마우스 오른쪽 버튼으로 클릭하면 된다.  유닛을 빠르게 찾기 위해 카테고리를 따라가 보거나 제일 위의 상단  필드에서 검색하면 된다. 퍼지 파인더(Fuzzy Finder) 퍼...

유닛들 연결하기

이미지
스크립트를 생성하기 위한 유닛과 포트간의 연결 링크(Connections Link)를 설명한다. 포트의 호환성(Compatible Ports) 연결 포트간에 연결이 가능한 경우에는 연결을 하려고 할 때 포트가 하이라이트가 된다. 반대로 연결이 불가한 경우 포트는 흐리게 표시된다.  만약 유닛에  호환 가능한 포트가 없는 경우에는 유닛 전체가 흐리게 표시된다.  즉,  대상 포트가 하이라이트되지 않는 다면 연결을 만들 수 없다. 예를 들어 어떤 숫자가 컴포넌트의 값으로 전환될 방법이 없는 경우 수의 연산 결과(숫자)를 타겟 유닛(컴포넌트)에 연결할 수 없게 된다. 위: 연결 가능, 아래: 연결 불가 자동 포트 선택 비주얼 스크립팅은 사용자가 커서를 타겟 유닛에 직접 대지 않더라도 유닛에서 가장 잘 호환되는 포트를 자동으로 선택하여 더 쉽게 조준할 수 있도록 도와준다.   이 포트는 노란색 직사각형으로 강조 표시되어 연결될 위치를 미리 볼 수 있다.   이는 작은 포트에 연결하기 위해 고도의 집중을 하지 않더라도 손쉽고 빠르게 새로운 연결을 만들 수 있다는 것을 의미한다. Automatic Port Selection 컬러 코딩 제어 연결(Control Connections)은 항상 흰색인 반면 값 연결(Value Connections)은 타입에 따라 색상으로 구분된다.  타입마다 고유의 색상을 가지고 있고 이를 통해 쉽게 찾을 수  수 있다.   컬러 펠릿 아이콘이 없는 타입은 모두 녹색으로 연결된다.   역자주) * 제어 연결(Control Connections): 유닛의 제일 상단에 있는 삼각형 포트간의 연결을 의미한다. * 값 연결(Value Connections): 빈 동그란 원형 포트간의 연결을 의미한다. * 컬러 펠릿 아이콘(Color Pellet Icon): 값 연결시 대응되는 값의 타입을 컬러 아이콘으로도 표시하고 있다. 값(Values) 툴바에서 Values t...

유닛간에 연결 만들기

이미지
연결(Connection)은 스크립트 로직(Logic) 흐름을 만들기 유닛들을 선으로 잇는 것이다. 연결을 만들려면: 다음 중 하나를 수행한다. 첫 번째   포트를 클릭한 상태에서 호환되는 유닛에 링크를 끌어다 놓다..   그래프에서 호환되는 유닛은 밝은 색으로 나타나고, 호환되지 않는 유닛은 흐리게 표시된다. 첫 번째 포트를 클릭한 뒤 빈 공간에서 클릭을 놓는다.   퍼지 파인더(Fuzzy Finder)가 나타난다.   필요한 유닛의 이름을 입력하거나 목록내에서 원하는 유닛을 찾는다.   어느 쪽이든 새로운 유닛이이 그래프에 나타나고 첫 번쩨 유닛의 포트에 연결된다. 이 유닛들은 사용되자마자 에디터에 나타나게 된다.   연결을 제거하려면 연결된 포트를 마우스 오른쪽 버튼으로 클릭한다.   연결에는 두 가지 유형이 있다. 업데이트 이벤트(Update Event)와 회전(Rotate) 호출 사이의 제어 연결(Control Connection). Per Second 노드와 회전 노드의 Y 각도 사이의 값 연결(Value Connection). 흰색선: 제어 연결, 하늘색선: 값 연결 <원문> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-creating-connection.html

그래프에 유닛을 추가하는 방법

이미지
스크립트 그래프(Script Graph)는 게임 플레이 로직을 구현한다.   플로우 그래프에 유닛을 추가하는 방법에는 여러 가지가 있다.   가장 일반적인 두 가지 방법은 다음 과정에 자세히 설명되어 있다.   참고: 새로운 스크립트 그래프를 만들면 "Start Event" 유닛과 "Update Event" 유닛이 스크립트 그래프에 자동으로 추가된다.   스크립트 그래프를 초기화할 때 "Start" 유닛은 한 번만 실행된다.  "Update"  유닛은 GameObject가 활성화되어 있는 한 계속 매 프레임마나다 실행된다. 그래프에 유닛을 추가하려면 다음과 같이한다.  1. 스크립트 그래프를 연다.  2. 다음 중 하나를 수행한다. 그래프의 빈 공간을 마우스 오른쪽 버튼으로 클릭한다. 퍼지 탐색기(Fuzzy Finder)가 모든 유닛 카테고리와 함께 나타난다. 퍼지 검색기를 스크롤하거나 검색 필드에 이름을 입력하여 장치를 선택한다. 선택된 유닛이 그래프에 나타난다. 입출력 포트를 통해 장치를 다른 장치에 연결한다. 유닛에 있는 어느 하나의 트리거(Trigger) 또는 데이터 포트(삼각 화살표 아이콘은 트리거 포트이고 다른 둥근 아이콘은 데이터 포트)를 클릭하여 빈 곳에 끌어다 놓는다. 원 소스 유닛과 호환되는 모든 유닛의 목록이 나타난다. (퍼지 탐색기 필드에서 스크롤하거나 이름을 입력하여) 하나를 선택한다.   선택한 유닛은 첫 번째 유닛에 연결된 그래프로 배치된다. 역자주) 참고를 위해 아래 동영상을 추가한다. 유닛의 생성과 연결 방법   <원문> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-add-unit-to-graph.html

비주얼 스크립트 그래프 유닛 만들기

이미지
역자주) 본 내용은 메뉴얼 원본에 있어서 추가하긴 하였으나 사용할 일은 없어 보인다. 매우 전문적인 프로그래머가 어떤 필요에 의해 사용할 일이 있을 수 있지만 프로그래밍이 아닌 비주얼 스크립트 내부의 기능만으로도 상당부분 해결이 되는 문제라고 생각된다. 초보자라면 무시하고 넘어가도록 하자.

스크립트 그래프 머신 생성하기

이미지
그래프(Graph)에는 스크립트 그래프(Script Graph)와 상태 그래프(State Graph) 두 종류가 있다.   스크립트 그래프는 판단(decisions)과 흐름(flow)으로 구성된 그래프이다.   상태 그래프는 캐릭터의 달리기(running) 및 점프(jumping) 같이 사용자가 정의한 상태를 가지며, 각개의 상태 유닛(State Unit)은 스크립트 그래프를 가질 수 있다. 스크립트 머신 그래프 만들기 스크립트 머신(Script Machine)은 스크립트가 시각적으로 표현된 스크립트 그래프를 가지고 있는 유니티 컴포넌트(component)를 의미한다.  1. Scene에서 GameObject를 선택한다.  2. 인스펙터(Inspector)에서    Add Component(컴포넌트 추가) 를 누른다.  3. Visual Scripting   >   Script Machine 을 선택한다.   Unity는 Script Machine 컴포넌트를 GameObject에 추가한다.  4. Script 소스의 선택(역자주-임배드로 할지 그래프로 할지 선택): Embed(임배드) : 이 그래프는 GameObject에 직접 포함되어 있으며, 에셋(여기서는 스크립트 그래프 파일)이 하드 디스크가 아닌 GameObject에 바로 저장되어 진다.       참고: 실행(Play) 모드(런타임)에서 스크립트 그래프를 변경하면 실행 모드가 종료된 후 모두 사라진다. 따라서 수정을 반영하고자 한다면 Play 모드를 종료하고 다시 수정해야 한다. (본 글의 6번으로 이동) Graph(그래프) : 일반적인 그래프이다.  스크립트 그래프 파일이  GameObject에 저장되지 않고 에셋 형태로 하드디스크에 새롭게 생성되어 저장된다.       참고: 그래프(Graph)를 사용하면 여러 오브젝트에서 공유...

디버그할 때 관계(Relations) 이용하기

이미지
역자주) 비주얼 스크립트를 작업해보지 않은 분이 본 내용을 이해하기는 어렵다. 이런게 있나 보다하고 넘어가면 될 듯 하다. 그렇게 심각하게 어려운 사항도 아니고 하다보면 그냥 자기도 모르게 익혀혀서 사용하게 된다.

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

이미지
비주얼 스크립팅은 플레이 모드가 실행되기전 오류를 발생시킬 수 있는 유닛을 예측하여 가리킬 수 있다.   또한 빠진 컴포넌트나 null 참조를 예측하기 위해 그래프를 분석한다.   런타임시에 오류가 발생하면 오류 유닛을 스크립팅 그래프에서 강조 표시로 집어낸다. 예측 디버깅 노드가 제대로 구성되지 않았거나 오류를 일으킬 수 있는 경우 노드는 노란색으로 표시되고   오류를 일으킬 것이 확실할 때는 주황색으로 표시된다   두 경우 모두 정상 상태가 될 때까지 노드를 검사하고 오류 색상을 유지한다.   예시:  Debug.Log 가 콘솔로 출력할 메시지(Message)가 누락되어 있기 때문에 로그 노드가 주황색으로 표시됨. Debug Log A + B의 결과를 메시지(Message) 포트에 연결하면 Debug.Log 노드가 정상으로 돌아간다.   그러나, Add 노드는 첫 번째 피연산자 A의 값이 없기 때문에 주황색으로 변한다. Debug Log 두 피연산자(A, B)에 값이 제공되면 모든 색상은 정상으로 돌아온다. 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...