라벨이 5. 주요 유닛들인 게시물 표시

유닛의 종류

유닛(Unit)은 비주얼 스크립팅에서 계산을 하는 가장 기본적인 요소다.  유닛은   텍스트로 필요한 정보를 표시하기도 하지만, 인스펙터에서 편집이 될 수도 있다.  유닛을  편집하려면 유닛을 선택하고 인스펙터에서 유닛의 속성(property)을 편집하면 된다. This Unit "This unit"은 그래프가 있는 머신(Machine) 컴포넌트를 소유한 게임 오브젝트(Game Object)를 리턴한다. Control Units "Control unit"은 If, Loop 혹은 흐름 합체같은 유닛들이다. (역자주 - 제어 포트를 가지고 있다) Time Units Time unit은 timer, cooldown 그리고 wait 유닛 등이 있다. Events(이벤트) 스크립팅 유닛(Scripting units)은  Evnets 를 수신한다.  Evnets는  모든 스크립트의 시작점이며 그래프에서 특별히 초록색 유닛으로 표시된다. (역자주 - Start Event, Update Event, On Button Input Event, On Destroy Event 등등) Variables(변수) 변수관련 유닛들에는 get, set 그리고 변수 check 유닛 등이 있다. (역자주 - get : 변수의 값을 가져옴 / set : 변수에 값을 저장함) Nulls(널) Null 유닛들은 null (nothing 값)을 다루는 기능을 한다. Formulas(공식, 수식) Formula는 다중 인수들을 받아서 논리나 수식을 직접적으로 평가하여 결과를 도출한다. <원문> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-units-reference.html

This unit

이미지
This unit은 해당 그래프가 실행되는 머신(Machine)을 갖고 있는 게임 오브젝트(Game Object) 반환(Return)한다. 기본적으로 유닛(Units)의 디폴트 타겟은 This이기 때문에 This 유닛을 별도로 명시해서 사용할 필요가 없다.   예를 들어, 이 두 그래프는 동일하다. Transform Rotate Unit This Unit 모든 유닛이 인라인 값(Inline Value)을 지원하는 것은 아니다.   기본 값으로 This대신에 None으로 표시되며 아무것도 없는 경우 해당 필드, 예를 들면 GameObject.Destroy  같은   경우 This를 직접 연결해서 명확히 해줘야한다. Game Object Destroy Unit This Unit 게임 오브젝트가 아직 소유하지 않았더라도 그래프 상에서 This unit을 사용해야 한다.  This unit은  머신(Machine)에서 사용되는 순간, 런타임 중에 그래프의 소유자(그래프가 있는 게임 오브젝트)를 가르키게 된다.   <원문> https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-self.html

Control units

이미지
제어 유닛(Control Units)은 분기(if), 반복문(loop) 그리고 흐름(flow)의 병합기능을 하는 유닛들이다. Brainching(분기) : If, Swith, Select 분기 유닛(Branching unit)은 값을 기준으로 제어 흐름을 분할한다.   < If > If 유닛은 부울(Boolean) 조건을 사용한다.  그 조건이 "True"일 때 어떤 작업을 진행하고, "False"일 때 다른 작업을 진행하게 된다. If Unit < Swith > enum(열거형), string(문자열) 또는 integer(정수) 값에 따라 분기가 되도록 하는 유닛들을 Switch unit이라고 한다. emnu(열거형)을 switch로 사용하려면 열거형 타입을 선택해야 한다.  그러면  분기 출력 포트가 나타난다. Switch string(문자열) 또는 숫자(number)를 switch로 사용하려면, 그래프 인스펙터에 분기 옵션을 추가해야한다. Switch 유닛의 출력 포트에 분기 옵션에 추가한 사항이 반영된다. Switch Unit string(문자열)은 선택자(selector)의 대소문자를 무시하도록 선택할 수도 있다. 참고: Default 포트는 기본적으로 추가되어 있다. 만약, 일치하는 입력 선택자가 없을 경우 제어가 Default로 흘러가게 된다. (역자주-프로그래밍의 switch 문에 default와 동일함)   < Select > Select unit은 Switch unit과 반대다.   선택자의 값에 따라 여러개의 옵션 집합에서 단일 값을 선택하게 된다. 예를 들어 playerNo에 따라 색상을 선택하는 "Select On Integer" 유닛이 있다. Select On Integer 참고: 위의 예에서 예측 디버깅(주황색으로 표시되는 경고)은 Default 포트가 연결되어 있지 않기 때문에 playerNo가 1, 2, 3, 4가 아닐 경우 오류가 생기게 됨을 ...

Time Units

이미지
Time 유닛에는 Timer, Cooldown, Wait 유닛들이 있다. Wait Wait 유닛은 스크립트 실행을 지연(delay)시킨다.   지연(delay)은 정해진 시간(초)이 될 수도 있고 계속 진행하기 전에 이행해야 하는 조건이 될 수도 있다.   Unity의 비동기성(실행이 지연되는 기능 또는 동작)은 코루틴(coroutine)으로 처리하고 있다(멀티쓰레드 방식이 아니다). Wait 유닛을 사용하려면 코루틴처럼 스크립트가 동작해야 한다고 비주얼 스크립팅에 알려야 한다.  그 방법은  스크립트를 시작시키는 초기 이벤트의  Coroutine 체크박스 에 체크해 주면 된다.   그래프 인스펙트에는 다음과 같이 보인다. Coroutine 이벤트 유닛에 작은 이중 화살표 아이콘이 나타나 코루틴으로 실행되고 있음을 알려준다. Coroutine 확인란이 활성화되지 않은 경우, 런타임시에 발생하는 에러는 포트가 Wait 유닛에 도달할 때만 '코루틴에서 트리거될 수 있음'을 나타내는 것이다.   모든 Wait 유닛은 루프(loops)와 시퀀스(sequences) 내부에서도 사용가능하다. Wait For Seconds   Wait For Seconds 유닛은 가장 단순하고 가장 자주 사용되는 Wait 유닛이다. 이 유닛은 실행을 일정 시간(초) 단위로 지연시킨다. (역자주-아래 예시는 마우스 클릭시 5초후에 "Waited!"라는 메시지가 콘솔에 출력된다.) Wait For Second Unit Wait Until Wait Until 유닛은 주어진 조건이 충족될 때까지 실행을 멈추게 한다. 아래 예시는 A < 1 조건이 될 때까지 "Close enough"는 콘솔에 출력되지 않는다. 즉, A < 1 인 상태가 되는 순간 출력이 된다. Wait Until Unit Wait While Wait While 유닛은 Wait Until 유닛과 정반대이다. 즉, 주어진 조건이 충족되는 한 실행을 멈추...