비주얼 스크립팅 소개

비주얼 스크립팅은 코드를 쓰지 않고도 게임이나 응용 프로그램에 대한 로직을 만들 수 있는 프로그래밍 기법이다. 이는 프로그래머뿐 아니라 기획자와 그래픽 디자이너도 최종 로직을 직접 작성하여 프로토타입을 빠르게 만들수 있도록 해주는데 그 로직은 시각적 단위(비주얼 유닛, Visual Unit)로 이루어진 그래프(Graph)들로 작성하게 된다. 비주얼 스크립팅은 프로그래머가 보다 고급 작업을 위해 사용하거나 다른 팀원이 사용할 수 있는 사용자 지정 유닛(커스텀 유닛, custom unit)을 만들수 있는 API도 제공한다. 비주얼 스크립팅은 함수, 연산자 또는 변수들을 그래픽 요소(graphical element)로 표현하고,  에지(여기서는 유닛들을 연결하는 선)를 사용하여 유닛의 포트를 서로 연결하는 방식의 개념에 기초하고 있다. 즉, 코드를 한 줄씩 써나가는 것이 아니라 시각적으로 작성한다. 설치(Installation) 2021.1 버전부터는 기본 패키지로 비주얼 스크립팅이 설치된다. 패키지 관리자(Package Manager)에서 확인할 수 있다. 2019년형 LTS, 2020년형 LTS 등 이전 버전의 Unity는 Unity Asset Store를 통해 설치해야 한다. 비주얼 스크립팅 환경설정(Configuring visual scripting) "Edit > project setting"과 "Edit > preferences"에서 기본 설정을 변경 할 수 있는데 이에 대해 설명한다.. 화면 레이아웃 및 바로 가기 사용(Using Windows and shortcuts) 화면 레이아웃을 설정하고 바로 가기 키를 설정하는 방법에 관해 설명한다. 비주얼 스크립팅 업데이트(Updating visual scripting) 비주얼 스크립팅을 업데이트 하는 방법에 대한 설명을 한다. 시스템 요구 사항(System Requirements) 비주얼 스크립팅은 추가적인 다른 프로그램(external dependency)을

비주얼 스크립팅의 구성 옵션

비주얼 스크립팅에는 두 가지 구성 옵션이 있는데, " Edit(편집) > 프로젝트 설정(Project Settings) > 비주얼 스크립팅(Visual Scripting) "에서 이 두 옵션의 설정(구성 요소)을 업데이트(추가)할 수 있다. 타입 옵션(Type Options): 변수와 유닛들의 타입(type) 옵션이다.. Unity에서 제공하는 MonoBehaviour type은 기본적으로 포함되어져 있다. 노드 라이브러리(Node Library): 유닛으로 사용하고자 하는 어셈블리(assemblies) 옵션이다. 기본적으로 유니티 어셈블리 라이브러리는 포함되어져 있다. 새 어셈블리를 추가하려면 " Add(+) "를 통해 추가하면 된다. 각 옵션의 항목에는 그것이 무엇을 하는지 설명하는 툴팁이 있다. 옵션의 기능을 잘 모른다면 기본값을 그대로 사용하고 나중에 변경하면 된다. 참고: 일부 옵션은 재시작(restart)이 필요할 수 있다. 따라서 구성 변경 사항이 적용되지 않은 경우 유니티를 다시 시작한다.   역자주) Old 버전에 관한 설명 같다. 구버전은 설치 단계에서 뭔가 선택해야 했지만, 2021버전에서는 신경쓸 필요 없이 바로 사용하면 된다. 추후 필요한 싯점에 Type Options과 Node Library을 업데이트 하면 된다.     <원문> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-configuration.html

비주얼 스크립팅 에디터 및 단축키 설정

이미지
  역자 주) 아래 글을 읽고 " 여기 "글에 있는 동영상을 보면 쉽게 이해가 갑니다.

비주얼 스크립팅 업데이트

이미지
Unity는 백업을 자주하고 데이터 사본을 별도의 저장 공간에 저장해 둘 것을 권장한다. 그래야 기본 데이터 손실이나 손상으로부터 보호할 수 있다. 참고: 비주얼 스크립팅을 업데이트하기 전에 항상 데이터를 백업한다.   비주얼 스크립팅을 위한 업데이트 워크 플로우는 다음과 같다. 프로젝트를 백업한다. 패키지 관리자(Package Manager)를 열고   업데이트 버튼을 누른다. 프로젝트 백업 그래프(Graph)와 비주얼 스크립팅 에셋은 자동으로 백업된다. 프로젝트를 수동으로 백업하는 것은 다음 메뉴에서 원클릭으로 가능하다. 메뉴에서  " Edit   >   Project Settings   >   Visual Scripting   >   Create Backup " 을 선택한 다음   OK를 누른다. " Edit>   Project Settings   >   Visual Scripting   >   Restore Backup " 을 통해 백업 폴더를 연다. 참고: 버전 컨트롤(Version Control)을 사용하지 않는 경우 백업을 자주 수행하는 것이 좋다. 참고: Unity는 Unity Cooperation, Git 또는 Subversion과 같은 버전 제어 시스템(VCS)을 사용할 것을 권장한다. Create Backup <원본> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-update-backups.html

버전 컨트롤(Version Control)

역자주) 본 내용은 git 사용시 .gitignore 파일에 관한 내용입니다. 지금 이해할 필요 없습니다. 단지, 비주얼 스크립팅 파일들을 git 등을 이용해 공개적으로 타인들에게 공유할 경우 위법의 소지가 으니 공개하지 말라는게 핵심이네요.

모바일/콘솔용 빌드하기

이미지
역자 주) 빌드 세팅 관련 사항인데 최신 빌드 방식들과 다를게 없습니다. 빌드에 대한 이해가 없는 초보자라면 굳이 지금 이해할 필요 없습니다. 

비주얼 스크립팅의 기본 개념

게임을 만들 때 사용되는 비주얼 스크립팅에는 네 가지 기본 개념이 있다. 타입(Type)  - 데이터 타입 타입은 데이터 사용 방법을 컴파일러에게 알려주는 데이터의 속성(attribute)이다. 스크립팅에서 모든 것은 객체(Object): 즉, 숫자(numbers), 텍스트(pieces of text), 벡터(vectors) 및 유니티 컴포넌트(unity components)는 모두 객체(Objects)다. 변수(Variable) 변수는 값과 데이터를 저장하는 용기(containers)이다. 각 변수에는 이름(name), 타입(type) 및 값(value)을 가지고 있다. 변수 내부의 값은 런타임(runtime) 중에(즉, 실행중에) 변경될 수 있다. 그래프(Graphs), 상태(States) 및 시스템(Machines) 그래프(Graphs)는 논리(logic)를 시각적으로 표현한 것이다. 이 것들이 비주얼 스크립팅의 핵심에 있다. (역자 주 - machine을 시스템으로 번역하였다. 유한 상태 머신(FSM - Finite State Machine)에서 machine의 개념을 이해하는게 도움이 된다. 유니티에서는 Script Machine, State Machine 이라는 용어를 사용하고 있다.) 그룹(Groups) 그래프들을 조직화하기 위해 그룹을 만들게된다. 그룹은 유닛을 둘러싸는 박스형태로 만들어진다.   <원문> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-concepts.html

유닛(Units)

이미지
유닛(units)은 비주얼 스크립팅에서 계산의 가장 기본적인 요소다.   유닛들은 매우 다양한 일들을 할 수 있다. 예를 들어, 이벤트 받기(listen), 변수의 값(value) 얻기(get) 그리고 컴포넌트(components)와 게임 오브젝트(game objects)에 대한 메소드(methods)를 호출(invoke)한다. Units 유닛들(units)은 자신이 사용되거나 다른 유닛들로부터 값을 전달받고 전달하는 순서를 의미하는 연결(conections)을 가지고 있다. 포트(Ports) 연결(connections)은 한 유닛의 포트에서 다른 유닛의 포트로 선을 끌고가 붙임으로 생성된다. 유닛의 왼쪽에는   입력 포트(Input Prots) 가 있다. 유닛의 오른쪽에는   출력 포트(Output Ports) 가 있다. 제어 포트(Control Ports) 는 연결 및 흐름(flow) 생성에 사용된다.   흐름(flow)은 유닛이 실행되는 순서다.   흐름(Flow)은 항상 왼쪽에서 오른쪽으로 흐르게 되는데 유닛에 있는 작은 화살표로 그 방향을 표시하고 있다. 값 포트(Value Ports) 는 값을 연결하는 데 사용된다.   각 값 포트에는 노드를 연결할 때 일치해야 하는 유형(type)이 있다. 역자 주) 이해를 돕기위해 아래 이미지를 추가하였다. 각 유닛의 왼쪽은 입력 포트이고 우측은 출력포트인데, 삼각형 모양이 제어 포트(Control Ports)이고 작은 동그라미들은 값 포트들(Value Ports)이다. 값 포트들은 유닛 내부에 색깔이나 이미지들을 가지고 있는데 값 포트의 각 노드에 선을 연결하기 위해서는 이 색이나 이미지가 같해야만 연결이 이루어 진다. 즉, 이는 데이터의 타입을 의미한다. 주황색은 텍스트(string), 하늘색은 숫자(int, float 등), 보라색은 불리언(Boolean)을 의미한다. Vector, Quaternion을 나타내는 이미지들도 있다. Units 포트 유형(Types of Ports) 플로우 포트(Flow Por

그래프(Graphs), 상태(States) 그리고 머신(Machines)

이미지
그래프는 로직(logic)을 시각적으로 표현한 것이다.  이 그래프가  비주얼 스크립팅의 핵심에 있다. 그래프에는 두 가지 종류가 있다. 스크립트 그래프(Script Graphs)는 개별적인 동작들과 값을 특정 순서로 연결하는 것이다.   실행 순서는 스크립트(Script)의 흐름(Flow)이다.   스크립트 그래프는 언리얼 엔진의 블루프린트(Blueprint) 비주얼 스크립팅 언어와 유사하다. (역자 주 - Script Graphs는 Script Machine에서 작성) 상태 그래프(State Graphs)는 서로 다른 상태를 만들고 그 상태들 간에 전환을 생성한다.   각 상태(State)는 작은 프로그램 역할을 한다.   상태 그래프는 플레이 메이커(PlayMaker) 또는 유한 상태 머신(FSM; Finite State Machine) 시스템과 유사하다. (역자 주 - State Graphs는 State Machine에서 작성, 각 State Graphs의 내부는 Script Graph로 작성된다. 여기 있는 Script Graph의 집합이 시스템 설계의 목적상 어떤 상태를 의미(정의)하기 때문에 State Graph가 되는 것이다) Script Graph 이 두 종류의 그래프로 어떤 종류의 게임도 만들 수 있다.   이 글에서는 그래프(Graph)와 그 그래프들의 유사점을 설명하고자 한다.   각 그래프에대한 설명은 본 메뉴얼에 별도의 전용 섹션이 마련되어 있다. 스크립트 그래프와 상태 그래프의 순서로 읽어 보기 바란다.    더욱이 두 종류의 그래프는 결합할 수 있다. 예를 들어, 상태 그래프의 각 상태 노드(State Node)는 실제로 스크립트 그래프(Script Graphs)로 이루어져 있다. 어떤 경우에 스크립트 그래프와 상태 그래프를 사용하는가? 스크립트 그래프(Script Graph)는 매 프레임마다 또는 충돌과 같은 이벤트가 발생할 때 동작이 실행된다.   스크립트 그래프는 분기(branching, 역자 주-if, swith 같은), 루

변수(Variables)

이미지
변수는 무엇인가를 담는 용기와 같다.   각 변수에는 이름, 유형 및 값이 있다.  비주얼  스크립팅에는 다음과 같은 6가지 유형의 변수가 있다.   변수형 설명 Flow Variable 플로우 변수 플로우 변수(Flow Variable)는 지역 변수(Local Variable)와 동일하다. (역자 주-C#, C++에서 for문 작성할 때 흔히 쓰는 "int i"같은 개념 ) Graph Variable 그래프 변수 그래프 변수(Graph Variable)는 스크립트 그래프의 인스턴스(Instance)에 범위의 변수이다.  이 변수는  가장 작은 범위를 가지고 있고 그래프 밖에서 접근하거나 수정할 수 없다. Object Variable 객체 변수 객체 변수(Object Variable)는 게임 객체(Game Object) 범위의 변수이다.  이 변수는  해당 게임 오브젝트에 있는 모든 비주얼 스크립트 그래프에 공유된다. Scene Variable 씬 변수 씬 변수(Scene Variable)는 현재 씬(Scene) 전체에  공유된다. Application Variable 어플리케이션 변수 어플리케이션 변수(Application Variable)는 씬(Scene)이 바뀌어도 지속된다.  단,  응용 프로그램이 종료되면 리셋된다. Saved Variable 저장 변수 저장 변수(Saved Variable)는 응용 프로그램이 종료된 후에도 지속된다.   단순하지만 강력한 저장 시스템으로 활용될 수 있다.   이 변수들은 유니티의 Player Prefs에 저장된다는 것으로 게임 오브젝트나 컴포넌트 같은 유니티 오브젝트를 참조하지 않는다는 뜻이다. 저장 변수(Saved Variable)와 초기 변수(Initial Variable)의 값 저장 변수(Saved Variable) 탭 아래에는 두 개의 하위 탭이 있다.  초기화(Initial)  및 저장됨(Saved). 초기화(Initial) 탭에서는 새로운 게임을 시작할 때 자동으로 생성되는 기본 값을 정의