툴/유니티

Unity Visual Scripting 비주얼 스크립팅 활용

스튜디오 오버그래픽스 2023. 7. 8. 22:40

키보드 인풋으로 제어하기

 

 

Get Input String 노드는 키보드 입력 값을 String으로 가져옴

 

Switch On String은 String값을 받고 해당 String에 해당하는 선택지가 있으면 Output을 내보냄.

 

Switch와 Get Input String을 써서 wasd 키보드 인풋을 간단하게 만들수도 있음

 


애니메이션 제어하기

Animator Set Bool 노드로 애니메이터 제어 할수 있음.

 


콜리전 충돌 감지하기

On Collision Enter 노드 사용.


Chainable

Chainable 체크 박스가 있는 경우 체크해주면 해당 노드의 데이터를 내보낼수 있는 Output이 생김.

 


병렬 연결

비주얼 스크립팅의 노드에서 줄기는 1대1 연결 방식인데 만약 1대 다로 연결 해야 한다면

Sequence Steps를 쓰면 1대 다로 연결 가능

 

Fixed Update는 매 프레임 마다 연산하는게 아닌 설정된 시간마다 연산을 하는 함수이며 물리값을 연산할때 주로 사용함.

 


정규화 및 크기 수치 변환

 

값의 변환으로 많이 쓰이는 Normalize와 Magnitude 기능의 노드

 


Formula

숫자의 연산이 많아지다보면 노드가 많아지고 복잡해지는데

Formula 노드에 수식을 텍스트로 적어서 사용할 수도 있음

 


IF 조건문

IF노드에서 Bool값을 받고 True/False에 따라 Output을 2개로 사용함.

Greater노드로 값을 비교해서 True/False를 내보낼수 있음.


For 반복문

For Loop 노드로 반복 연산 할수 있음.

그 외에 While Loop, For Each Loop도 있음.

 


변수 저장하기

Blackboard에서 Saved 단계에 LastPos(Vector3)라는 변수를 Initial로 생성

 

그리고 플레이 중에 매번 LastPos변수에 현재 오브젝트의 위치값을 저장하게 로직 만듬

그리고 플레이 이후에 종료해보면 Saved에 LastPos가 생겨있고 값이 반영되어 있음.

 

에디터를 끄고 다시 불러와도 해당 변수의 값은 남아 있고

Get Variable로 가져오면 저장된 값이 반영됌.

 


유형 변환

https://docs.unity3d.com/Packages/com.unity.visualscripting@1.8/manual/vs-types.html

 

Object types | Visual Scripting | 1.8.0

Object types All scripting in Unity is based on the C# programming language. C# is a "strongly typed" language. This means that all data and objects in Visual Scripting have a specific type. For example, a variable can be a number with an integer type, or

docs.unity3d.com

Visual Scripting은 다음 유형 변환을 자동으로 수행할 수 있습니다.

  • 숫자를 숫자로(예: 5를 5.0으로 또는 5.0을 5로 변환하는 것과 같이 정수를 실수로 변환할 수 있음)
  • 기본 클래스에서 자식 클래스로
  • 하위 클래스에서 기본 클래스로
  • 사용자 지정 연산자(예: 벡터 2를 벡터 3으로 변환할 수 있음)
  • GameObject를 구성 요소로(예: GameObject를 해당 Rigidbody 구성 요소로)
  • GameObject에 대한 구성 요소(예: 해당 GameObject에 대한 Rigidbody 구성 요소)
  • 동일한 GameObject의 구성 요소에서 구성 요소로(예: Rigidbody 구성 요소에서 Transform 구성 요소로)
  • 배열에 대한 열거형
  • 나열할 열거형

UI 버튼 Onclick() 이벤트

먼저 버튼을 만들고 On Click() 이벤트는 별도로 추가 하지 않아도 됌

(On Click()이벤트에서 함수를 호출하는게 아닌 Script Graph에서 역으로 호출하는 개념)

 

Script Graph에서 'On Button Click'노드를 만들고 Button컴포넌트가 있는 오브젝트를 지정해주면 해당 button이 작동될때 실행됌.

 

또는 버튼 타입의 변수를 만들어서 버튼을 Inspector에서 지정해주고

On Button Click노드에 버튼 변수를 연결해서 지정해줄수도 있음.

 


Coroutine과 Wait

코루틴을 안쓰는 상태에서 Wait For Seconds를 연결하면 에러가 남

(~~can only be triggered in a coroutine)

On Start 노드에서 Coroutine을 체크해주면 에러 없이 작동.

 

(코루틴은 함수를 일시정지 할수 있기 때문에 Wait 기능을 사용 할수 있음)