스크립트 작성하기

유닛(Units)은 비주얼 스크립팅이 처리하는 가장 기본적인 요소다. 다른 비주얼 스크립팅 언어에서는 이를 노드(Node) 또는 작업(Action)이라고 부른다. 유잇은 입력과 출력 포트를 가지고 있으며, 스크립트 그래프(Script Graph)에서 "블록(Blocks)"처럼 시각적 그래픽으로 표현된다.

Units
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
퍼지 파인더(Fuzzy Finder)

퍼지 파인더에서 흐리게 보여지는 유닛들은 비주얼 스크립팅이 현재 맥락에서 사용할 수 없다는 의미를 전달하는 것이다. 이는 유용한 예측 디버깅을 가능하게 한다.

퍼지 파인더는 각 유닛이 생성되기 전에 미리보기 안내를 제공한다. 예를 들어, Subtract 유닛의 경우 Subtract 유닛의 기능과 포트(Ports)에 대한 간략한 설명이 있다.


Fuzzy Finder
Fuzzy Finder



오버로드(Overloads)


일부 유닛들은 동일힌 이름으로 여러개로 분화되어져 있는데, 이를 오버로드(Overload, 역자주-프로그래밍 용어임)라고 한다.

예를 들어, Add 유닛의 경우 기본 Add 유닛 이외에 4개의 Add 유닛(Scalar, 2D Vector, 3D Vector, 4D Vector)을 더 가지고 있다. 이 경우 이름 우측에 있는 범주내용을 보고 구분하면 된다.


Overloads
Overloads


어떤 메서드 유닛(Method Unit)들은 파라미터 오버로드(parameter Overloads)가 있다. 일반적으로 이러한 다양화는 편의를 위한 제공된 것이며 이들은 거시적으로 같은 기능을 수반한다. 어떤 오버로드들은 비교적 더 세부적으로 세팅을 구성할 수 있도록 한다.


예를 들어 Rotate Transform 유닛에는 6개의 오버로드가 있다. 그 중 2개는 단일 오일러 각 벡터(Euler Angle Vector)로 각도 값을 취하고, 다른 2개는 X, Y, Z 3개의 개별 축의 값으로 취하고, 마지막 2개는 축에 상대적인 각도 값으로 취한다. 아래 이미지에서 보여지는 3쌍의 유닛들 중 왼쪽은 상대 공간(Relative Space, 상대 좌표)을 우측은 월드 공간(World Space, 절대 좌표)을 기준으로 각도를 지정한다.


아래 이미지는 rotate 유닛에 대한 6개의 오버로드를 나타낸다.


Overloads
Overloads

Rotate Transform Units
Rotate Transform Units


다양한 옵션들에 익숙해질 때까지 적절한 오버로드를 찾는데 여러번의 시행착오나 오류를 경험할 것이다. 이러한 다양한 사용기능들을 올바르게 사용 위해서는 기본적으로 제공되는 가이드나 Unity 메뉴얼을 잘 활용하기 바란다.


유닛의 해석


아래 이미지의 Rotate Transform 유닛의 다음 예에서 가장 먼저 주목해야 할 것은 이 유닛이 선택된 유닛임을 나타내는 가장자리의 파란색 테두리선이다. 유닛을 선택하면 옵션과 가이드가 그래프 검사기(Graph Inspector)에 표시된다.


유닛의 윗부분은 헤더로, 유닛이 하는 일을 간략히 요약한 설명이있다. 이 경우 헤더는 Transform Component에서 Rotate Method를 호출하고 있음을 설명하고 있다.


invoking the Rotate method
invoking the Rotate method



그래프 인스펙터(Graph Inspector)


그래프 인스펙터는 다음과 같이 이루어져 있다.


Graph Inspector
Graph Inspector
  • 상단에는 선택된 유닛의 제목과 요약이 있으며, 유닛이 하는 작업에 대한 간략한 개요를 제공한다.
  • 그 아래, 비주얼 스크립팅은 유닛에 대한 모든 경고를 표시한다. 위의 예시에서 비주얼 스크립팅은 메시지가 누럭되었음을 경고하고 있다.
  • 그 아래는 유닛의 세팅에 대한 안내가 있다. 세팅은 유닛마다 다르며, 어떤 유닛의 경우 세팅이 필요 없는 경우도 있다. (역자주- "Unit is never entered."는 입력 포트로의 입력 연결이 필요한데 연결되어 있지 않다는 의미를 나타내고 있다.)
  • 그리고 끝으로 Inputs과 Outputs의 각 포트에 대한 설명이 있다.



인라인 값(Inline Values)


어떤 입력 값 포트(Value Input Ports, 아래 유닛에서 제일 좌측의 빈 동그라미들)들은 그 옆에 작은 필드(아래 대부분 0이라고 쓰여져 있는 부분)를 가지고 있다. 이를 인라인 값(Inline Value)이라고 한다. 포트가 연결되어 있지 않으면 이 필드의 값이 대신 사용된다. 대부분의 일반적인 타입들은 인라인 값을 지원하지만 모든 타입이 인라인 값을 지원하는 것은 아니다. 인라인 값은 모든 값 입력 포트(Value Input Port)에 리터럴 유닛(Literal Units)이 연결되지 않도록 허용하기 때문에 그래프를 깔끔하게 유지하는 데 유용하다.


예를 들어, 아래 두 그래프는 동일하다.


Inline Values
Inline Values

Inline Values
Inline Values


댓글

이 블로그의 인기 게시물

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

EMACS - 검색 및 바꾸기

EMACS, CLISP, SLIME 설치