Mesh 101 자습서 3장: 메시 시각적 스크립팅을 사용하여 대화형 작업 추가
참고 항목
Mesh 도구 키트를 정기적으로 업데이트하며 이 비디오에는 최신 변경 내용이 모두 반영되지 않을 수 있습니다. 이 문서의 내용을 진실의 근원으로 보아야 합니다.
이제 설정 단계를 완료했으므로 GameObjects를 대화형으로 만들어 보겠습니다. 이 장에서는 사용자 지정 논리를 환경에 추가하는 데 사용할 수 있는 메시 시각적 스크립팅에 대해 자세히 설명합니다.
참고 항목
메시 스크립팅에는 C# 코드를 사용하는 메시 클라우드 스크립팅과 스크립트 그래프를 만든 다음 시퀀스에 노드(단위라고도 함)를 추가하여 코딩 논리를 만드는 메시 시각적 스크립팅의 두 가지 유형이 있습니다. 이 버전의 Mesh 101 자습서에서는 메시 시각적 스크립팅을 사용합니다. 이전 버전에서는 Mesh Cloud Scripting을 사용했습니다.
메시 스크립팅은 모든 환경에 필요하지는 않지만 여기서 추가될 기능(대화형 단추 만들기, 정보 텍스트 팝업 트리거, 장면 주변 텔레포트)에 필요합니다.
스테이션 3.1: 상호 작용 가능한 단추 만들기
첫 번째 작업의 경우 아바타를 누르면 비디오를 재생하는 단추를 만들려고 합니다. 그런 다음 아바타가 같은 단추를 눌러 비디오를 중지할 수 있습니다.
- 장면 창에서 3장의 스테이션이 포함된 Sphere Terrace로 이동하고 아래와 같이 첫 번째 스테이션인 3.1 - 비디오 재생을 볼 수 있도록 보기를 조정합니다.
볼 수 있듯이 이미 비디오 화면이 있지만 재생/중지 단추가 필요합니다. 스테이션의 텍스트 상자에서 설명한 대로 VideoPlayer를 설정/해제하고 단추 텍스트를 변경하는 데 단추를 사용할 수 있도록 몇 가지 단추 논리가 있는 스크립트 그래프를 만듭니다.
장면에 단추 추가
Unity에서 Chapter3이라는 GameObject와 3.1 - Video라는 자식 개체가 확장되었는지 확인합니다.
프로젝트 창에서 ButtonBase 프리팹을 검색합니다. 검색 필터에 대해 ALL을 선택해야 합니다.
프로젝트 창에서 ButtonBase를 끌어온 다음 계층 구조에서 3.1이라는 GameObject에 놓습니다. 단추베이스가 3.1에 자식으로 배치되도록 비디오 - 비디오입니다.
ButtonBase의 변환>위치 값이 0, 0, 0인지 확인합니다.
ButtonBase 는 장면에 원하는 위치보다 약간 낮게 배치됩니다. 이 문제를 해결해 보겠습니다.
계층 구조에서 ButtonBase가 선택되어 있는지 확인합니다.
검사기에서 변환>위치>Y 값을 "1"로 변경합니다.
맞습니다! 이제 ButtonBase 가 비디오 화면 바로 아래에 올바르게 있습니다.
단추 이름 바꾸기
ButtonBase를 선택한 상태에서 검사기에서 ButtonBase의 이름을 "PlayVideoButton"으로 변경합니다.
단추의 레이블 변경
지금은 단추의 텍스트에 레이블이 표시됩니다. 이를 "재생"으로 변경해 보겠습니다.
계층 구조에서 PlayVideoButton GameObject를 확장하여 자식 개체 단추를 표시한 다음 단추를 확장하여 자식 개체를 표시한 다음 레이블 자식 개체를 선택합니다.
검사기에서 TextMeshPro -- 텍스트 구성 요소로 이동한 다음 텍스트 입력 상자에서 텍스트를 "재생"으로 변경합니다.
단추에 대한 시각적 스크립트 만들기
계층 구조에서 PlayVideoButton이 선택되어 있는지 확인합니다.
검사기에서 구성 요소 추가를 클릭한 다음 스크립트 머신을 선택합니다.
검사기에 두 개의 새 구성 요소인 스크립트 컴퓨터 및 변수가 추가되었습니다. 검사기 아래쪽에 Mesh Visual Scripting Diagnostics라는 새 창도 있습니다. 이 창은 시각적 스크립트에 대한 피드백을 제공하며 문제 해결에 유용할 수 있습니다.
스크립트 컴퓨터 구성 요소에서 원본 옵션은 Graph로 설정됩니다. 원본에는 그래프 및 포함의 두 가지 선택 항목이 있습니다. 각각에는 장점과 단점이 있습니다. Graph 스크립트는 별도의 파일로 저장되므로 스크립트에 대해 Graph를 선택하면 유연성이 향상됩니다.
팁
그래프 및 포함은 Unity 스크립트 머신 문서에서 자세히 설명합니다.
스크립트 컴퓨터 구성 요소에서 새로 만들기 단추를 클릭합니다.
그래프 저장 창에서 새 폴더를 만든 다음 이름을 "스크립트"로 바꿉니다.
Scripts 폴더를 연 다음 파일 이름 텍스트 상자에 "PlayVideoButton"을 입력합니다.
완료되면 저장 단추를 클릭합니다.
스크립트 머신 구성 요소에서 그래프의 제목 필드에 "Video Player"라는 이름을 입력합니다.
그래프의 요약 필드에 "비디오 플레이어가 재생/중지 작업에 응답하는 방법을 정의합니다."라는 설명을 입력합니다.
스크립트 그래프 설정
스크립트 컴퓨터 구성 요소에서 그래프 편집을 클릭합니다. 그러면 스크립트 그래프 창이 열립니다. 스크립트 그래프 및 장면 창을 동시에 볼 수 있도록 프로젝트 및 콘솔 탭 옆에 끌어다 놓습니다.
노드를 추가하면 창에 더 많은 공간이 필요할 수 있습니다. 3점 단추를 클릭한 다음 최대화(Maximize)를 선택하여 이 작업을 수행하거나 창의 오른쪽 위 모서리에 있는 전체 화면 단추를 클릭할 수 있습니다.
참고 항목
노드를 Visual Scripting의 단위 라고도 합니다. 이 자습서에서는 용어 노드를 계속 사용합니다.
기본 OnStart 및 OnUpdate 노드는 필요하지 않습니다. 삭제합니다.
스크립트 그래프 레이아웃
스크립트 그래프에는 다음 두 개의 섹션이 있습니다.
섹션 1: 비디오 플레이어 재생/중지 단추를 클릭한 시기를 감지합니다. 섹션 2: 클릭하면 비디오를 재생합니다. 다시 클릭하면 비디오를 중지합니다.
최종 결과가 어떻게 표시되는지에 대한 미리 보기는 다음과 같습니다.
단추를 클릭했는지 감지
단추를 클릭할지 감지하는 첫 번째 섹션에는 3개의 노드가 필요합니다. 실제로 클릭을 "수신 대기"하고 클릭에 반응하는 프로젝트의 GameObject는 Button입니다. 스크립트 그래프에 추가해 보겠습니다.
Button 개체 변수 만들기
계층 구조에서 PlayVideoButton을 확장합니다.
스크립트 그래프 블랙보드에서 새 개체 변수를 만듭니다. (새 변수 이름) 필드에 이름 "Button"을 입력하고 "+" 단추를 클릭합니다.
개체 변수의 형식을 게임 개체로 설정합니다.
계층 구조에서 Button GameObject를 끌어 새 변수의 값 필드에 놓습니다.
Blackboard에서 Button 개체 변수를 끌어서 스크립트 그래프에 놓아 노드로 추가합니다.
팁: 여기서 잠시 시간을 내어 Button GameObject의 일부 구성 요소를 검사할 수 있습니다.
메시 상호 작용 가능 설정: 이 구성 요소는 Button을 상호 작용할 수 있는 개체로 만듭니다. 자세한 내용은 Grab, hold and throw with Interactables를 참조 하세요.
스크립트 머신: 단추 기본 동작이라는 스크립트 그래프가 있습니다.
재생 모드로 전환하면 Mesh Interactable Body라는 새 구성 요소가 단추에 추가되는 것을 볼 수 있습니다.
이 구성 요소는 런타임에 상호 작용 가능한 본문에 자동으로 추가됩니다. IsHovered 및 IsSelected와 같은 다양한 속성을 시각적 스크립팅에 노출합니다. 이 속성은 잠시 후에 유용하게 사용할 수 있습니다.
스크립트 그래프에서 단추가 선택된 시기를 알려주는 노드를 추가해 보겠습니다.
필요한 경우 재생 모드를 종료한 다음 계층 구조에서 PlayVideoButton을 선택하여 스크립트 그래프 창에 해당 그래프가 표시되는지 확인합니다.
스크립트 그래프에서 개체 변수 가져오기 노드의 아웃포트 포트를 클릭하고 누른 다음 마우스 단추를 놓습니다. 그러면 유사 항목 찾기가 열립니다. 경고: 유사 항목 찾기를 열면 Unity 인터페이스 외부의 아무 곳이나 클릭하지 마세요. 이렇게 하면 유사 항목 찾기가 닫히고 스크립트 그래프에서 예측할 수 없는 동작이 발생합니다.
Is를 검색한 다음 목록에서 Mesh Interactable Body: IsSelected를 선택합니다.
참고: 이 노드는 부울 값을 출력합니다. 그래프 검사기에서 이를 확인할 수 있습니다.
선택한 노드의 출력 포트에서 커넥터를 끌어온 다음 Microsoft Mesh: On State Changed라는 새 노드를 만듭니다. (유사 항목 찾기에서 변경된 상태를 검색합니다.)
세 개의 단추 클릭 검색 노드입니다. Is Selected 노드는 False 값으로 시작하지만 단추를 클릭하면 값이 True로 변경되고 상태 변경 노드에 전달됩니다. 그런 다음 이 노드는 다음에 추가할 재생/중지 노드를 트리거합니다.
비디오 재생 또는 중지
On State Changed의 값이 true이면 비디오가 재생됩니다. 이미 재생 중이고 단추를 누르면 상태 변경 시 false 값으로 변경되고 비디오 재생이 중지됩니다. 이는 곧 추가할 스크립트 그래프 섹션 2의 노드에 영향을 줍니다. 이 노드는 표시할 수 있는 비디오와 스틸 이미지를 제공합니다.
다음 단계는 흐름을 결정하는 if 노드를 추가하는 것입니다.
On State Changed 노드의 제어 출력 포트에서 커넥터를 끌어 온 다음 새 if 노드를 만듭니다. (유사 항목 찾기에서 if를 검색합니다.)
On State Changed 노드의 데이터 출력 포트에서 if 노드의 데이터 입력 포트로 커넥터를 끌어옵니다.
비디오가 재생 중인지 여부를 결정하는 변수 만들기
Blackboard에서 개체 탭으로 이동한 다음 "isPlaying"이라는 변수를 만듭니다. 형식을 "Boolean"으로 지정하고 값 확인란을 선택 취소된 상태로 둡니다. 그러면 부울에 false의 기본값이 지정됩니다.
"isPlaying" 변수를 스크립트 그래프로 끌어서 *If 노드의 오른쪽에 놓습니다.
If 노드의 True Control 출력 포트에서 커넥터를 끌어서 새 개체 변수 집합 노드를 만듭니다. 유사 항목 찾기에서 set 개체를 검색합니다.
개체 변수 설정 노드에서 변수 이름 드롭다운을 클릭한 다음 isPlaying을 선택합니다.
isPlaying 변수는 여기서 이중 작업을 수행해야 합니다. isPlaying에 항상 올바른 값이 있는지 확인하려면 Negate 노드에서 입력을 제공해 보겠습니다.
개체 변수 설정: isPlaying 노드의 아래쪽 데이터 입력 포트에서 커넥터를 끌어서 새 Negate 노드를 만듭니다. (유사 항목 찾기에서 부정을 검색합니다.)
Negate 노드의 데이터 입력 포트에서 커넥터를 끌어서 새 개체 변수 가져오기 노드를 만듭니다. 유사 항목 찾기에서 개체 변수 가져오기를 검색합니다.
개체 변수 가져오기 노드에서 변수 이름 드롭다운을 클릭한 다음 isPlaying을 선택합니다.
Negate 노드는 IsPlaying 값을 현재 설정된 값과 반대로 변경합니다. 장면이 시작되면 isPlaying 은 false(기본값)입니다. 재생/중지 단추를 클릭하면 Negate 노드가 개체 변수 설정 노드의 isPlaying을 true로 설정하면 비디오가 재생됩니다. 단추를 다시 클릭하면 Negate 노드 에서 isPlaying 을 false로 다시 설정하면 비디오가 중지됩니다.
비디오 재생 또는 스틸 이미지 표시
이제 스크립트 그래프의 섹션 2를 만들기 시작합니다. isPlaying이 변경되었는지 감지하는 노드를 추가합니다. 그러면 비디오를 재생할지 아니면 Station 3.1의 WebSlate에 스틸 이미지를 표시할지 결정됩니다.
그래프의 아래쪽 부분에서 개체 변수 가져오기 노드를 추가하고 해당 값을 isPlaying으로 설정합니다. 그래프를 마우스 오른쪽 단추로 클릭한 다음 노드를 추가합니다. 개체 가져오기를 검색 합니다.)
개체 변수 가져오기: isPlaying 노드의 데이터 출력 포트에서 커넥터를 끌어온 다음 새 On State Changed 노드를 만듭니다 . (유사 항목 찾기에서 변경된 상태를 검색합니다.)
On State Changed 노드의 컨트롤 출력 포트에서 커넥터를 끌어 서 새 If 노드를 만듭니다. (유사 항목 찾기에서 if를 검색합니다.)
On State Changed 노드의 데이터 출력 포트에서 커넥터를 끌어온 다음 if 노드의 데이터 입력 포트에 연결합니다.
비디오 및 VideoStill(이미지) GameObjects
계층 구조에서 VideoPlayer GameObject를 확장하고 두 개의 자식 개체인 Video 및 VideoStill이 있음을 확인합니다.
비디오를 선택한 다음, 검사기에서 다음을 확인합니다.
비디오에는 풍력 터빈 비디오에 대한 링크가 있는 Video Player라는 구성 요소가 있습니다.
비디오가 비활성 상태입니다(이름 옆의 확인란은 비어 있음).
계층 구조에서 VideoStill GameObject를 선택한 다음, 검사기에서 다음을 확인합니다.
VideoStill 에는 스틸 이미지가 첨부되어 있습니다.
VideoStill 이 활성화되어 있습니다(이름 옆의 확인란이 선택됨).
장면이 시작되면 비디오 화면에 스틸 이미지가 표시되고(VideoStill이 활성화되어 있기 때문에) 비디오가 재생되지 않습니다(비디오가 비활성 상태이기 때문). 참석자가 재생을 표시하는 동안 재생/중지 단추를 누르면 비디오가 활성화되어 비디오가 재생되고 동시에 VideoStill이 비활성 상태가 되어 정지 이미지가 숨겨집니다. 또한 참석자가 단추를 다시 누르면 단추의 레이블이 재생에서 중지로 변경되고, 비디오가 비활성 상태가 되어 비디오를 중지하고, VideoStill이 다시 활성화되어 비디오 화면에 스틸 이미지가 다시 표시됩니다.
그래프의 나머지 노드는 이 모든 작업을 수행합니다.
Video 및 VideoStill(이미지) 개체 변수 만들기
Video 및 VideoStill GameObjects의 값을 포함하는 개체 변수를 만들어 보겠습니다.
계층 구조에서 VideoPlayer를 확장합니다.
스크립트 그래프 블랙보드에서 새 개체 변수를 만듭니다. (새 변수 이름) 필드에 이름 "Video"를 입력한 다음 "+" 단추를 클릭합니다.
개체 변수의 형식을 게임 개체로 설정합니다.
계층 구조에서 Video GameObject를 끌어 새 변수의 값 필드에 놓습니다.
Blackboard에서 새 개체 변수를 만듭니다. (새 변수 이름) 필드에 "VideoStill"이라는 이름을 입력하고 "+" 단추를 클릭합니다.
개체 변수의 형식을 게임 개체로 설정합니다.
계층 구조에서 VideoStill GameObject를 끌어 새 변수의 값 필드에 놓습니다.
스크립트 그래프 구조
스크립트 그래프의 나머지 섹션 2를 디자인하는 방법을 고려하는 것이 좋습니다. "If" 노드는 "true" 흐름 및 "false" 흐름에서 분기됩니다. 두 흐름에서 개체 변수에 쉽게 액세스할 수 있어야 하므로 다음과 같이 흐름 사이의 행에 배치합니다.
스크립트 그래프에 Video 및 VideoStill 개체 변수 추가
Blackboard에서 Video Object 변수를 끌어서 스크립트 그래프에 놓아 노드로 추가합니다. If 노드 아래에 배치합니다.
Blackboard에서 VideoStill 개체 변수를 끌어서 스크립트 그래프에 놓아 노드로 추가합니다. 개체 변수 가져오기: 비디오 노드의 오른쪽에 배치합니다.
비디오 켜기
If 노드의 "True" 컨트롤 출력 포트에서 커넥터를 끌어서 새 게임 개체를 만듭니다. 활성 노드를 설정합니다. (유사 항목 찾기에서 활성 집합을 검색합니다.)
개체 변수 가져오기: 비디오 노드의 데이터 출력 포트에서 커넥터를 끌어 게임 개체의 첫 번째 데이터 입력 포트인 활성 노드 설정에 연결합니다.
노드의 값 확인란을 선택하여 노드를 활성화합니다.
개체 변수 가져오기: VideoStill 노드의 데이터 출력 포트에서 커넥터를 끌어서 게임 개체의 첫 번째 데이터 입력 포트인 방금 만든 활성 노드 설정에 연결합니다.
노드의 값 확인란을 선택 취소된 상태로 유지합니다. 이렇게 하면 노드가 비활성 상태가 됩니다.
이제 단추를 클릭하면 비디오가 재생되고 스틸 이미지가 숨겨집니다. 이 시퀀스에서는 한 가지만 더 필요합니다. 재생/중지 단추는 토글이므로 참석자가 재생을 클릭한 후 단추의 레이블이 중지로 변경된 다음 다시 클릭하면 레이블이 재생으로 다시 변경되는지 확인해야 합니다. 이를 위해 개체 변수를 만들고 추가한 다음 TextMeshPro 노드를 추가해야 합니다.
레이블 개체 변수 만들기 및 추가
계층 구조에서 PlayVideoButton 및 해당 자식 개체 단추가 확장되었는지 확인합니다.
스크립트 그래프 블랙보드에서 새 개체 변수를 만듭니다. (새 변수 이름) 필드에 이름 "레이블"을 입력하고 "+" 단추를 클릭합니다.
개체 변수의 형식을 게임 개체로 설정합니다.
계층 구조에서 Label GameObject를 끌어 새 변수의 값 필드에 놓습니다.
Blackboard에서 레이블 개체 변수를 끌어서 스크립트 그래프에 놓아 노드로 추가합니다. 개체 변수 가져오기: VideoStill 노드의 오른쪽에 배치합니다.
Text Mesh Pro 노드 추가
게임 개체의 컨트롤 출력 포트에서 커넥터를 끌어다 놓습니다. 활성 노드를 설정한 다음 새 Text Mesh Pro: Set Text 노드를 만듭니다. (유사 항목 찾기에서 설정된 텍스트를 검색합니다.) 게임 개체의 오른쪽 위 행에 배치합니다. 활성 노드를 설정합니다.
개체 변수 가져오기: 레이블 노드의 데이터 출력 포트에서 커넥터를 끌어온 다음 Text Mesh Pro: Set Text 노드의 위쪽 데이터 입력 포트에 연결합니다.
노드의 텍스트 필드에 "중지"를 입력합니다.
비디오를 중지할 노드 추가
이 그래프에 사용할 노드는 3개만 더 있습니다. 비디오를 재생하는 동안 단추를 클릭하면 isPlaying 변수가 false가 되고 비디오가 중지되고 단추 레이블이 다시 재생으로 변경되도록 단추에 대한 false 조건을 설정해야 합니다.
여기에서 바로 가기를 사용할 수 있습니다.
"true인 경우" 흐름을 구성하는 맨 위 행의 세 노드를 Control 키를 누른 상태로 클릭합니다.
스크립트 그래프를 마우스 오른쪽 단추로 클릭한 다음 팝업 메뉴에서 [중복 선택]을 선택합니다.
그래프에서 중복된 노드를 아래로 끌어 변수 행 아래에 놓습니다.
"if false" 노드 설정
개체 변수 가져오기: 비디오 노드의 데이터 출력 포트에서 커넥터를 끌어서 첫 번째 게임 개체의 맨 위 데이터 입력 포트에 연결합니다. 노드의 아래쪽 행에 활성 노드를 설정합니다.
동일한 첫 번째 게임 개체: 활성 노드를 설정하고 값을 선택 취소합니다.
개체 변수 가져오기: VideoStill 노드의 데이터 출력 포트에서 커넥터를 끌어서 두 번째 게임 개체의 맨 위 데이터 입력 포트에 연결합니다. 노드의 아래쪽 행에 활성 노드를 설정합니다.
두 번째 게임 개체: 활성 노드를 설정하고 값을 선택합니다.
개체 변수 가져오기: 레이블 노드의 데이터 출력 포트에서 커넥터를 끌어서 Text Mesh Pro의 맨 위 데이터 입력 포트에 연결합니다. 텍스트 노드를 오른쪽으로 설정합니다.
동일한 Text Mesh Pro: 텍스트 노드를 설정하고 텍스트를 중지에서 재생으로 변경합니다.
If 노드의 "False" 컨트롤 출력 포트에서 커넥터를 끌어서 첫 번째 게임 개체의 제어 입력 포트에 연결합니다. 노드의 아래쪽 행에 활성 노드를 설정합니다.
환경의 다른 사용자와 비디오 플레이어 상호 작용 공유
이벤트를 트리거하는 참석자만 스크립트의 이벤트를 경험하도록 하고, 다른 시간에는 장면의 모든 사용자가 이벤트를 경험하도록 할 수 있습니다. 로컬 스크립트 범위 구성 요소를 사용하여 이를 제어할 수 있습니다.
계층 구조에서 PlayVideoButton이 선택되어 있는지 확인합니다.
검사기에서 구성 요소 추가 단추를 클릭한 다음 로컬 스크립트 범위를 추가합니다.
이 자습서에서는 경험의 모든 참석자가 비디오 플레이어와의 상호 작용을 보고 비디오 자체가 재생되고 일시 중지되는 것을 볼 수 있기를 바랍니다. 이를 위해 이 게임 개체 옵션의 시각적 스크립트 변수 공유가 선택되어 있는지 확인합니다. 이 옵션 아래의 정보 상자는 공유되는 항목과 로컬로 남아 있는 항목을 알려줍니다.
작업 테스트
Unity에서 프로젝트를 저장한 다음 Unity 편집기 재생 단추를 누릅니다.
게임 창에서 비디오 플레이어 아래의 재생 단추를 클릭합니다. 이렇게 하면 단추의 레이블이 중지로 변경되고 풍력 터빈에 대한 간략한 비디오가 단추 위의 화면에서 재생됩니다.
비디오 시청을 마쳤으면 편집한 단추를 다시 누릅니다(이제 레이블 이 중지됨).
Unity 편집기 재생 단추를 눌러 재생 모드를 종료합니다.
스테이션 3.2: 정보 대화 트리거
이 기능의 경우 아바타가 단추를 누를 때 정보 대화 상자가 표시되도록 하는 기존 시각적 스크립트를 향상시킵니다.
계층 구조에서 3.1 - Video GameObject를 축소합니다.
장면 창에서 정보 대화 트리거 스테이션은 3.1 - 비디오 재생 스테이션의 오른쪽에 있습니다. 스테이션 3.2를 명확하게 볼 수 있도록 보기를 조정합니다.
검사기에서 3.2 - 정보 대화 상자라는 GameObject를 확장합니다.
계층 구조에서 InfoButtonWrapper를 선택합니다.
검사기에서 InfoButtonWrapper에는 로컬 스크립트 범위 구성 요소가 연결되어 있으며 이 게임 개체 옵션의 시각적 스크립트 변수 공유는 선택되지 않습니다.
참석자가 정보 대화 상자를 표시하는 단추를 클릭하면 단추가 숨겨지기 때문입니다. 이 옵션을 선택하면 단추가 장면의 모든 사용자에게 숨겨지므로 원하지 않습니다.
검사기에서 대화 상자 표시 그래프가 포함된 스크립트 컴퓨터 구성 요소로 이동한 다음 그래프 편집 단추를 클릭합니다.
그래프에서 If 노드의 True Control 출력 포트에서 커넥터를 끌어서 새 Microsoft Mesh: Show Dialog 노드를 만듭니다. (유사 항목 찾기에서 표시 대화 상자를 검색합니다.)
대화 상자 표시 노드에서 메시지 필드를 클릭한 다음 메시지라는 단어를 다음 문장으로 바꿉다.
세계에서 가장 큰 풍력 터빈에 축구장보다 더 긴 블레이드가 있다는 것을 알고 계셨나요?
정보 대화 상자에 표시되는 메시지입니다.
현재 확인을 표시하는 드롭다운을 선택한 다음 팝업 목록에서 확인을 선택 취소하고 계속을 선택합니다. 그러면 사용자가 메시지를 읽은 후 대화 상자를 닫기 위해 클릭할 수 있는 정보 대화 상자에 계속 단추가 추가됩니다.
작업 테스트
Unity 편집기에서 프로젝트를 저장한 다음 Unity 편집기 재생 단추를 누릅니다.
탐색 키를 사용하여 아바타를 단추에서 뒤로 돌립니다. 아바타가 특정 거리일 때 단추가 회전하며 선택할 수 없습니다.
단추쪽으로 걸어갑니다. 특정 지점에서 단추가 회전을 중지하여 이제 선택할 수 있음을 알립니다.
단추를 선택합니다. 정보 대화 상자가 나타나고 이전에 대화 상자 표시 노드에 추가한 메시지가 표시됩니다.
참고 항목
재생 모드에서 정보 대화 상자의 모양은 메시에 표시되는 방식과 다르며, 이 대화 상자는 Sphere Terrace의 다른 패널과 매우 유사하게 표시됩니다.
정보 대화 상자를 마쳤으면 [계속] 단추를 클릭합니다. 단추를 클릭하면 사라집니다. 단추를 다시 사용하려면 종료한 다음 재생 모드로 다시 입력해야 합니다.
팁
여기서 적용되는 거리 및 트리거 요소는 ProximityDetector GameObject의 구성 요소에 따라 결정됩니다.
Unity 편집기 재생 단추를 눌러 재생 모드를 종료합니다.
스테이션 3.3: 터빈 발전기에 텔레포트
이 기능의 경우 장면의 참석자가 텔레포트할 수 있도록 스크립트 그래프에 일부 노드를 추가합니다. 참석자가 단추를 누르면 스테이션 3.3의 현재 위치에서 풍력 터빈 발전기에 연결된 상승된 플랫폼으로 이동됩니다. 그런 다음 생성기를 검사할 수 있습니다.
스크립트 그래프 업데이트
장면 창에서 3.3 - 터빈 스테이션으로의 텔레포트는 3.2 - 정보 대화 트리거 스테이션의 오른쪽에 있습니다. 스테이션 3.3을 명확하게 볼 수 있도록 보기를 조정합니다.
계층 구조에서 3.2 - 정보 대화 상자 GameObject를 축소한 다음 3.3 - Teleport GameObject를 확장합니다.
단추가 모두 설정되어 있습니다--- 스크립트 그래프에 원격 포트 동작을 제공하는 노드를 추가하기만 하면 됩니다.
계층 구조에서 ChapterLabel GameObject를 확장한 다음 TeleportToWindTurbineButton GameObject를 선택합니다.
검사기에는 TeleportToLocationButtonStart라는 스크립트가 연결된 Teleport to Location이라는 스크립트 컴퓨터 구성 요소가 있습니다. 원본 옵션은 Graph로 설정됩니다. 즉, 스크립트 그래프가 프로젝트에 독립 파일로 저장됩니다.
그래프 편집 단추를 클릭합니다. 이전 장과 마찬가지로 그래프에는 이미 일부 노드가 설정되어 있습니다.
잠시 후에 이 스크립트 그래프에 노드를 추가하겠습니다.
이동 지점 만들기 및 참조 추가
그래서 "여행 지점"은 무엇입니까, 당신은 물어 볼 수 있습니다 ... ? 기본적으로 생성하거나 텔레포트할 공간의 지점을 정의하는 데 사용할 수 있는 구성 요소입니다. 일반적으로 먼저 여행 그룹을 만든 다음 하나 이상의 여행 포인트를 추가합니다. 이 프로젝트에서 여행 그룹을 이미 만들었으므로 아래 단계에서 해당 그룹에 여행 지점을 추가합니다. 그런 다음, 해당 이동 지점을 아바타가 텔레포트 단추를 클릭할 때 이동할 위치로 사용합니다. 자세한 내용은 아바타 생성 및 텔레포트 지점 만들기 문서를 참조하세요.
계층 구조에서 새 빈 GameObject를 TravelGroup의 자식 개체로 만든 다음 이름을 "TeleportLocationWindTurbine"으로 바꿉니다.
검사기에서 구성 요소 추가 단추를 클릭한 다음 이동 지점 구성 요소를 검색하여 추가합니다.
Inspector의 변환 구성 요소에서 다음 값을 입력합니다.
위치:
X = 6
Y = 56
Z = 60회전:
X = 0
Y = 255
Z = 0아바타는 이 위치로 텔레포트됩니다.
검사기에서 이름 옆에 있는 확인란의 선택을 취소하여 TeleportLocationWindTurbine GameObject를 비활성 상태로 만듭니다. 런타임에 둘 이상의 TravelPoint 개체가 활성 상태인 경우 Unity는 활성 Travel Points 중 하나를 아바타의 생성 지점으로 임의로 선택합니다. TeleportLocationChapter3 GameObject가 나타내는 지점에서 아바타가 생성되도록 하여 유일한 활성 이동 지점이어야 합니다. 비활성 상태인 TeleportLocationWindTurbine은 계층 구조에서 흐리게 표시됩니다.
Teleport Location 개체 변수 만들기 및 추가
스크립트 그래프 블랙보드에서 새 개체 변수를 만듭니다. (새 변수 이름) 필드에 "TeleportLocation"이라는 이름을 입력하고 "+" 단추를 클릭합니다.
개체 변수의 형식을 게임 개체로 설정합니다.
계층 구조에서 TeleportLocationWindTurbine GameObject를 끌어 새 변수의 값 필드에 놓습니다.
Blackboard에서 Button 개체 변수를 끌어서 스크립트 그래프에 놓아 노드로 추가합니다. If 노드 아래에 배치합니다.
텔레포트 노드 추가
If 노드의 "True" 출력 제어 포트에서 커넥터를 끌어서 게임 개체: 활성 설정이라는 새 노드를 만듭니다. (유사 항목 찾기에서 활성 집합을 검색합니다.)
개체 변수 가져오기: TeleportLocation 노드의 데이터 출력 포트에서 커넥터를 끌어 게임 개체의 첫 번째 데이터 입력 포트인 활성 노드 설정에 연결합니다.
노드의 값 옵션을 선택하여 활성화합니다.
이동 지점 노드 추가
게임 개체의 제어 출력 포트에서 커넥터를 끌어다 놓습니다. 활성 노드를 설정한 다음 이동 지점: 지점으로 이동이라는 새 노드를 만듭니다. (유사 항목 찾기에서 여행 지점: 여행 지점을 검색합니다.)
개체 변수 가져오기: TeleportLocation 노드의 데이터 출력 포트에서 커넥터를 끌어 이동 지점: 지점으로 이동 노드의 데이터 입력 포트에 연결합니다.
그러면 그래프가 완료됩니다.
작업 테스트
Unity 편집기에서 프로젝트를 저장한 다음 Unity 편집기 재생 단추를 누릅니다.
스테이션 3.3으로 이동한 다음, 텔레포트 단추를 클릭하여 풍력 터빈 발전기까지 텔레포트합니다.
3.3 -- 생성기 정보 상자에서 생성기 표시/숨기기 단추를 선택합니다. 풍력 터빈의 측면에 창이 열리고 내부에서 발전기를 볼 수 있습니다.
발전기 가까이에서 한 걸음 더 나아가 보세요. 정말 멋지군요! 작업을 마쳤으면 다시 밖으로 이동한 다음 생성기 표시/숨기기 단추를 누릅니다. 그러면 창이 닫힙니다.
4장으로 이동
이 시점에서 경험의 참석자는 4장으로 이동하여 물리학과 관련된 풍력 터빈 활동에 대해 알아볼 준비가 된 것입니다. 3장과 마찬가지로 4장에 대한 스테이션이 포함된 구 테라스가 있습니다. 이동 방법:
풍력 터빈 발전기에서 반대 방향으로 회전하고 3.3을 향해 걸어갑니다. 4 장 정보 상자로 이동합니다.
4장까지의 텔레포트 단추를 누릅니다.
광고된 바와 같이, 이것은 4장과 메시 물리학의 역 앞에 아바타를 배치합니다.
3장: 요약
이 챕터에서는 Mesh Visual Scripting을 사용하여 환경의 참석자가 다음을 수행할 수 있도록 하는 기능을 추가했습니다.
풍력 터빈에 대한 교육용 비디오가 재생되도록 하는 단추를 누릅니다.
풍력 터빈에 대한 정보 대화 상자 표시를 트리거하는 단추를 누릅니다.
참석자를 처음부터 풍력 터빈 발전기에 연결된 플랫폼으로 텔레포트하는 단추를 눌러 발전기를 가까이에서 검사할 수 있습니다.