글

변수(Variables) 추가하기

이미지
변수(Variables)는 값을 저장하는 저장소이다.   각 변수에는 이름(name), 유형(type) 및 값(value)이 있다.   변수 내부의 값은 런타임 중에 변경될 수 있다. 블랙보드 윈도우(Blackboard Window) 블랙보드 윈도우는 스크립트 그래프 윈도우(Script Graph Window)의 블랙보드(Blackboard) 버튼(<x>)을 통해 열수 있다(역자 주-기본적으로 열려져 있음).  각 변수의 타입에 해당하는  탭이 하나씩 있다.  그래프(Graph)  탭은 스크립트 그래프를 선택한 경우에만 활성화된다.   오브젝트(Object) 탭은 게임 오브젝트를 선택한 경우에만 활성화된다. Blackboard Window 변수를 추가하려면: 추가할 변수 유형에 해당하는 탭을 선택한다. 새 변수 이름 필드에 새 변수의 이름을 입력한다. 추가(+)   버튼을 클릭한다. 변수 타입을 선택한다. (선택사항) 기본값을 변경한다. <원문> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-adding-variables.html

객체 변수(Object Variable)의 활용

이미지
객체 변수(Object Variables)는 변수 컴포넌트로도 존재하며, 스크립트 그래프에서 사용할 수 있다.   예를 들면, 게임 오브젝트에 체력(health) 변수가 노출된다는 것이다.. 객체 변수(Object Variable)는 게임 오브젝트(Game Object)를 선택하고 인스펙터(Inspector)의 변수(Variable) 컴포넌트에서 확인할 수 있고 블랙보드(Blackboard)의 오브젝트(Object) 탭에서도 확인할 수 있다.   참고: 블랙보드(Blackboard)에서 변수 콤포넌트(Variable Component)가 있는 게임 오브젝트를 선택했을 때 게임 변수(Object Variable) 탭이 활성화되며, 이후 이 탭에서는 선택한 게임 오브젝트의 변수만 볼 수 있다.   프로젝트 창에서 스크립트 그래프 에셋을 선택하면 오브젝트(Object) 탭이 사라진다.   역자주-참고를 위해 아래 이미지를 추가함. 객체 변수(Object Variable) 컴포넌트 객체 변수(Object Variable)의 사용 방법   1. 스크립트 머신(Script machine)을 추가한다.      유니티에서 자동으로 해당 게임 오브젝트에 변수 컴포넌트(Variable Component)를 추가한다.   이 컴포넌트는 객체 변수(Object Variables)를 위한 것이다.      참고: 객체 변수(Object Variable)는 해당 오브젝트 전체에 공유된다.  게임 오브젝트 에 적용된 여러 개의 스크립트 그래프는 모두 동일한 객체 변수(Object Variable)를 사용할 수 있다.   사용자가 모든 겍체 변수를 직접 추가해야 하므로 게임 오브젝트에 존재하지 않는 객체 변수(Object Variable)는 사용하면 안된다.   2. Edit Graph 를 선택한다.   3. 그래프에 유닛(Units)을 추가한다....

객체 타입의 선택

이미지
오브젝트(Object)가 무엇을 나타내고 무엇을 할 수 있는지 구별하기 위해 각 오브젝트는 타입(유형, 역자주-데이터 타입)이 있다.  비주얼   스크립팅에서 대부분의 타입은 아이콘으로 표현된다. 타입을 선택해야 하는 경우 비주얼 스크립팅에 타입 메뉴가 표시된다. Visual Scripting Type Menu 가장 일반적인 타입은 메뉴 상단에 있다.   열거형(Emun)은 맨 아래에 그룹화되어져 있다.  기타  타입들은 그 타입 명칭의 네임스페이스(Namespace)로 그룹화되어져 있다. 모든 유니티 컴포넌트(Unity Component) 및 데이타 타입(Data Type)은 Unity Engine namespace에서 찾을 수 있다. 사용자 정의 타입(Custom Types) 비주얼 스크립팅은 모든 클래스(Class) 및 구조체(Struct) 타입을 지원한다.   기본적으로 유니티 오브젝트(Unity Objects), 컴포넌트(Components), 모노 비헤이비어(Mono Behaviours), 스크립터블 오브젝트(Scriptable Objects)에서 파생된 가장 일반적으로 사용되는 타입만 퍼지 파인더(Fuzzy Finder)에 나타난다. (역자주-디폴트로 나타나지 않는 타입들은 "Edit > Project Settings > Visual Scripting"에 추가해주면 된다. 추후 사용 가능한 기능이 많아지면 본인의 필요에 따라 이 메뉴를 자주 이용하게 될 듯 하다)   타사 플러그인과 같은 사용자 정의 어셈블리의 사용자 정의 타입을 사용하려면 먼저   어셈블리 옵션(Assembly Options) 에 추가해야 한다.   <원문> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-types.html

그래프(Graph) 생성하기

이미지
그래프(Graph)는 재사용할 수 있으며 그 그래프 소스를 가지고 있는 머신(Machine)에 의해 참조되어 진다.   그래프(Graph)는 일반적으로 임베드(Embed)보다 우월하다. 그래프(Graph)는 재사용 가능하고 어떤 오브젝트에 억매이지도 않으며 프리팹(Prefabs)에서 사용할 때도 안정적으로 작동한다. 그래프(Graph) 파일을 생성하는 방법 프로젝트 패널의 빈 폴더를 마우스 오른쪽 버튼으로 누른다. Create   >   Visual Scripting   >   (Script   또는   State) Graph 를 선택한다. 참고: 최상위 그래프 폴더에 그래프 파일을 저장하는 것이 좋지만 폴더의 구조는 기능에 영향을 주지 않는다. (역자주-보통 C# 코드는 Scripts 폴더를 만들어 저장하듯이 VisualScripts라는 폴더를 만들어서 저장하면 된다.) 새로 생성한 그래프(Grpah) 파일(엣셋 폴더에 있는)을 머신(Machine)의 그래프(Graph) 필드(스테이트(State Field)가 아닌)에 끌어서 놓는다. 위와 같이 하면 그래프(Graph)가 머신(Machine)에 할당되어 있다.   역자주) 완전 초보자의 이해를 돕기 위해 아래 동영을 만들어 보았다. <원문> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-creating-macro.html

객체 타입들(Object Types)

Unity와 비주얼 스크립팅에는 수백 가지의 타입이 있다.   다음은 가장 일반적인 타입의 요약 표이다.   타입 설명 Float 소수점 값이 있는 숫자. 부동소수점(예: 0.5 또는 13.25) Integer 소수점 값이 없는 숫자(예: 3 또는 200). Boolean 불(Bool), 참 또는 거짓만 될 수 있는 값.   일반적으로 논리 또는 토글에 사용된다. String 문자열(String), 이름 또는 메시지와 같은 텍스트의 한 부분. Char 문자열의 단일 문자(영문자 A, a, B, b 또는 문자로 나타내는 숫자 1, 2).   거의 사용할 일이 없다. Enums 열거형이라고 한다.   각각은 드롭다운에서 흔히 볼 수 있는 옵션으로 유한하게 열거된다. 예시1) Unity에서 "Force Mode" 열거형은 "Force", "Impulse", "Acceleration" 또는 "Velocity Change"가 될 수 있다.  예시2) "Direction(방향)"의 열거형은 "동(East)", "서(West)", "남(South)", "북(North)"으로 나타낼 수 있다. Vectors 벡터(Vectors)는 부동 좌표(float coordinates)의 집합으로 위치(Positions) 또는 방향(directions)을 갖는다. Unity에는 다음과 같은 세 가지 벡터가 있다. Vector 2: 2D에 대한 X, Y 좌표 Vector 3: 3D에 대한 X, Y, Z 좌표 Vector 4: X, Y, Z, W 좌표로 거의 사용되지는 않는다. GameObject 게임 오브젝트(GameObject)는 유니티 씬에 있는 가장 기본이 되는 엔터티(entity)다.   각 게임 오브젝트는 이름(name), 위치(position)와 회전(rotation)을 위한 트랜스폼(transform...

프리팹(Prefabs)에 머신(Machine) 추가하기

이미지
편집기내부에 생성된 임배드 그래프(Embed Graph) 프리팹 인스턴스(Prefab Instances)를 제외한 모든 타입의 그래프에 대해 완전하게 프리팹(Prefab)에서의 사용을 지원한다. 프리팹 인스턴스(Prefab Instance) Graph Embed 편집기에서 생성된 경우 O ! 런타임에 인스턴스화된 경우 O O   프리팹(Prefab)으로 임베드 그래프(Embed Graph)가 있는 머신(Machine)을 사용하면 프리팹 정의에서 편집한 내용이 자동으로 프리팹 인스턴스(Prefab Instances)로 전파된다.  이 때 비주얼  스크립팅은 인스펙터(Inspector)와 그래프 창에 경고 메시지를 표시한다. Embed 참고: 프리팹에 머신(Machine)을 추가할 때는 임배드(Embed) 대신 그래프(Graph)를 사용하십시오. 프리팹 오버라이드(Prefab Overrides) 비주얼 스크립팅은 Unity의 기본 직렬화(Serialization)를 사용하지 않는다. 중첩(Nesting), 확장성(Extensibility) 및 커버리지(Coverage)가 요구하는 안정성을 위해 사용자 지정 직렬화 엔진(Custom Serialization Engine)인   FullSerializer 를 사용한다.   참고: 인스펙터(Inspector) 라벨(Labels)과 값(Values)이 볼드(Bold)로 표시되면 프리팹(Prefab)은 오버라이드(Override)보다는 차별화(Differentiation)를 나타낸다.   예를 들어, 프리팹 인스턴스의 인스펙터 필드는 이 값을 오버라이드했더라도 프리팹 정의와 동일한 값을 갖는 경우에는 절대 볼드(Bold)로 표시되지 않는다.   역자주) 위 내용의 말이 어려워서 아래 영상을 제작해서 추가합니다. Embed Machine을 가지고 있는...

스크립트를 그룹화하여 관리하기

이미지
그룹은 작성한 그래프(유닛들의 집합)들을 조직화하여 관리할 수 있도록 하는 박스를 의미하며, 이는 비주얼 스크립트의 일부를 재사용할 수 있도록 하기도 합니다.   스크립트 그래프에서 그룹을 만드는 방법 Ctrl 키   또는 Mac에서   Cmd 를 누른 상태에서 그래프 주변 영역을 마우스로 선택한다. 그래프의 일부 유닛들이 포함되도록 마우스를 드래그한다. 각 그룹에 제목을 지정한다.   팁: 그룹에 의미 있는 제목을 제공하는 것이 좋다. 참고: 그룹의 헤더를 두 번 눌러 그룹의 모든 항목을 선택하십시오. 참고: 유니티 컨트롤 스킴(Unity Control Scheme)을 사용할 경우, Alt(Option) 키를 누른 채 마우스로 헤더(박스 위쪽)를 끌 경우 내용을 가만있고 박스만 움직일 수 있다.(역자주-기본적으로 그냥 마우스로 박스 헤더를 이동하면 박스 안의 모든 내용이 함께 움직임니다. 박스만 움직일 경우 Alt키를 함께 누르면 된다.)   그룹이 선택되어 있을 때 마우스 오른쪽 버튼을 누르고  Delete ( Section )를 하면 그룹 박스가 삭제된다. Group in a script graph 그래프 인스펙트(Graph Inspector)에서 그룹의 이름, 주석 그리고 색상을 변경할 수 있다.    그 코멘트(comment)는 인스펙터(Inspector)에서만 볼 수 있다.   역자주) 추가적인 이해를 위해 아래 이미지를 추가한다. Visual Scripting: organizing scripts in groups <원본> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-groups.html

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

이미지
스크립트 그래프(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...