메시 시각적 스크립팅 노드 참조
Visual Scripting 개요 문서로 이동
간격에 따라
On Interval 이벤트 노드는 동일한 방의 모든 클라이언트에서 동기화되는 정기적인 시간 간격으로 스크립트 흐름을 트리거합니다.
- 간격: 이벤트 간 간격(초)입니다.
- 지연: 첫 번째 이벤트 전 지연(초)입니다. 이를 사용하여 서로 다른 On Interval 노드에 의해 트리거되는 동일한 간격으로 이벤트를 인터리브할 수 있습니다.
상태 변경 시
On State Changed 이벤트 노드는 입력 값이 변경될 때 트리거됩니다. 이 메커니즘은 로컬 및 동일한 회의실의 다른 클라이언트에서 사용자 상호 작용 또는 기타 시각적 스크립트로 인한 상태 변경에 스크립트가 응답할 수 있는 강력한 메커니즘입니다.
- 값: 관찰할 입력 포트 수를 지정합니다. 최대 10명의 입력 포트를 동시에 관찰할 수 있습니다. 상태 변경 시 해당 값이 변경되면 트리거됩니다.
- 이 시퀀스에서 0, 1 이상: 상태 변경에 대해 관찰된 입력입니다. 변수 가져오기 또는 구성 요소 속성(인스턴스 또는 정적)과 같은 입력에 데이터 노드를 연결할 수 있습니다.
- 이 시퀀스의 Out 0, Out 1 등: 관찰된 값을 반환하는 In 0(등) 입력에 해당하는 출력입니다.
스크립트 변수 또는 구성 요소 속성을 관찰할 때 On State Changed 는 일반적으로 내부적으로 적절한 콜백을 등록하여 작동하므로 입력을 지속적으로 다시 평가할 필요가 없습니다. 다음 예제 와 같이 적절한 콜백을 사용할 수 없는 경우 On State Changed 노드가 빨간색으로 바뀌고 그래프 검사기 패널에서 입력을 효율적으로 관찰할 수 없으므로 사용하지 않도록 설정됨을 경고합니다.
이 경우 그래프 검사기 패널에서 폴링 허용을 선택하여 On State Changed에서 입력을 지속적으로 다시 평가하여 변경 내용을 검색하도록 강제할 수 있습니다. 노드는 위쪽에 노란색 막대를 유지하여 런타임 비용 증가 시 입력을 관찰하고 있음을 상기시킵니다.
대화 상자 표시
대화 상자 표시 노드에는 사용자 지정 메시지와 사용자가 대화 상자를 해제할 수 있는 하나 이상의 단추가 있는 대화 상자가 표시됩니다.
- 텍스트: 대화 상자에 표시되는 메시지입니다. 메시지 텍스트는 필요한 경우 단어로 래핑됩니다.
- 단추: 사용자에게 표시할 단추 선택 확인, 취소, 예, 아니요, 확인, 다음, 다시 시도, 계속, 나가기 단추를 표시할 수 있습니다.
- 결과: 단추를 선택하여 대화 상자를 해제할 때 사용자의 응답을 저장할 변수 이름입니다. (비워 두면 응답이 삭제됩니다.)
- 대상: 사용자의 응답을 저장할 변수 구성 요소가 있는 GameObject입니다.
결과 변수가 정의되면 대화 상자 표시 노드가 입력되는 즉시 빈 문자열로 다시 설정되고 사용자가 대화 상자를 해제할 단추를 선택하면 비동기적으로 사용자의 응답으로 설정됩니다. 저장된 값은 위의 목록에서 단추의 로컬링되지 않은 레이블입니다. 다음 예제와 같이 On State Changed 이벤트 노드를 사용하여 사용자의 응답에 반응합니다.
결과 변수는 로컬 또는 공유될 수 있습니다. 공유되는 경우 사용자의 응답은 동일한 방에 있는 모든 클라이언트로 전송되고 On State Changed 이벤트 노드는 모든 클라이언트에서 트리거되어 사용자의 응답에 반응합니다.
물리학 이벤트 노드
트리거 Enter, 트리거 종료 시, 충돌 입력 시 및 충돌 종료 시의 물리학 이벤트 노드는 안정적으로 네트워크로 연결됩니다. 기본적으로 이러한 이벤트는 회의실의 모든 클라이언트에서 안정적으로 트리거됩니다. 그러나 이러한 이벤트 노드에서 관찰된 물리학 충돌체가 로컬 물리학 범위 구성 요소의 범위에 있는 경우 이벤트는 정확히 하나의 클라이언트에서 안정적으로 트리거됩니다. 이렇게 하면 공유 상태를 안정적으로 읽고 쓰도록 트리거되는 스크립트 흐름(예: 공유 점수 변수 업데이트)이 가능합니다.
보안
Mesh는 다음과 같은 위협 시나리오로부터 사용자를 보호합니다.
- 손상된 장면 콘텐츠(예: 중요한 로컬 데이터에 액세스하려는 악의적인 시도)
- 손상된 클라이언트 또는 전송 채널(예: 다른 클라이언트에서 액세스할 수 없는 원격 데이터를 읽거나 쓰려는 악의적인 시도).
이를 위해 Mesh는 샌드박스(예: 웹 브라우저의 JavaScript)에서 시각적 스크립트를 실행합니다.
장면 시작 시 Mesh는 큐레이팅된 허용 목록을 사용하여 시각적 스크립트의 유효성을 검사하여 특정 유형의 Unity 구성 요소 및 해당 속성의 안전한 하위 집합에 대한 액세스를 제한합니다.
장면 런타임에서 Mesh는 장면의 특정 부분에 대한 액세스를 제한합니다.
- 로컬: Mesh 내부 및 기타 중요한 데이터에 대한 액세스를 방지합니다.
- 원격: 장면의 작성자가 장면의 이 부분을 수정하려는지 확인합니다. 이 작업은 수신기 쪽에서 잠재적인 장면 쓰기에 대한 시각적 스크립트를 정적으로 분석하여 수행됩니다.
예:
- 악의적인 로컬 시각적 스크립트는 모든 아바타에 보블 헤드를 제공하려고 합니다. 이를 위해 아바타 헤드를 나타내는 GameObjects의 전체 장면을 검색하려고 합니다. 메시는 자동으로 검사 결과를 필터링하여 아바타 시스템을 제외합니다.
- 악의적인 원격 클라이언트는 모든 GameObjects를 거꾸로 뒤집어 장면을 훼손하려고 합니다. 이를 위해 장면에서 각 GameObject의 수직 배율을 설정하는 속성 업데이트를 보냅니다. 그러나 수신 클라이언트의 시각적 스크립트는 이러한 작업을 수행하도록 설계되지 않으므로 로컬 클라이언트는 원격 입력을 무시합니다.