다음을 통해 공유


클라우드 스크립팅 기본 개념

Mesh Cloud Scripting 및 Mesh Visual Scripting 개요 읽기

Mesh Cloud Scripts와 MonoBehaviours의 차이점

Mesh Cloud Scripting과 MonoBehaviours 간에는 몇 가지 주요 차이점이 있습니다.

  • 클라우드 스크립팅 서비스는 Mesh Cloud Scripting API(Unity API와 반대)에 대해 작성됩니다.
  • 클라우드 스크립팅 서비스는 클라이언트가 아닌 별도의 프로세스로 클라우드에서 실행되며 해당 효과는 연결된 모든 클라이언트에 자동으로 동기화됩니다.

아키텍처 개요

Mesh Cloud Scripting을 사용하도록 설정하기 위해 Mesh Cloud Scripting Service라는 애플리케이션 서비스가 사용자가 제공하는 특정 Azure 리소스 그룹에 배포됩니다. 클라우드 스크립팅은 Azure 백 엔드에서 실행되며 클라이언트가 연결하는 엔드포인트가 있는 컨테이너에서 실행되는 서버 C# 스크립트 집합으로 구성됩니다. 아래 다이어그램에서는 클라우드 스크립팅 서비스에 연결하는 두 개의 클라이언트가 있음을 확인할 수 있습니다. 클라우드 스크립팅 서비스에는 고유한 신뢰할 수 있는 장면 그래프(다이어그램에 "A"로 표시됨)가 있습니다. 클라우드 스크립팅 서비스는 Mesh Cloud Scripting 장면 그래프 API를 통해 이 장면 그래프와 상호 작용합니다.

클라우드 스크립팅 아키텍처의 다이어그램입니다.

메시 클라우드 스크립팅 장면 그래프는 클라우드에서 연결된 모든 클라이언트로 자동으로 동기화됩니다. 각 클라이언트에는 신뢰할 수 있는 클라우드 버전과 동기화된 상태로 유지되는 메시 클라우드 스크립팅 장면 그래프(다이어그램에 "B"로 표시됨)의 동일한 복사본이 있습니다. Mesh Cloud Scripting Service가 클라우드의 장면 그래프를 변경하면 이러한 변경 내용이 모든 클라이언트의 복사본으로 전파됩니다.

각 클라이언트에서 Unity Mesh 런타임은 메시 클라우드 스크립팅 장면 그래프의 클라이언트 인스턴스 변경 내용에 반응하고 Unity 장면을 업데이트하여 상태를 반영합니다. Mesh Cloud Scripting 장면 그래프 API와 Unity 장면 그래프 API는 다르지만 서로 밀접하게 매핑되며 구조가 동일하거나 유사합니다.

메시 클라우드 스크립팅, 게임 개체 및 메시 클라우드 스크립팅 장면 그래프

결국 Mesh 앱의 이벤트에 표시되는 개체는 다음 두 가지 범주로 나눌 수 있습니다.

  1. Unity의 환경에 추가하는 개체입니다.

  2. 이벤트를 사용자 지정하는 개체입니다. 이는 환경의 일부가 아니었기 때문에 Mesh Cloud Scripting은 이를 인식하지 못합니다.

장면 빌드

Mesh Cloud Scripting을 사용하도록 설정하려면 장면에 Mesh Cloud Scripting 구성 요소가 있어야 합니다.

GameObject에 연결된 메시 클라우드 스크립팅 구성 요소의 스크린샷입니다.

구성 요소는 사용자가 만든 스크립트를 관리하고 Mesh 앱에서 편집 시간과 런타임에 Unity 장면에 바인딩하는 작업을 담당합니다. Mesh Cloud Scripting은 독립 실행형 기술이지만 Unity와 긴밀하게 통합되어 있습니다. 간단한 클라우드 스크립팅 프로젝트 만들기라는 문서에서 Mesh Cloud Scripting GameObject를 추가하기 위한 지침과 프로그래머 가이드 섹션의 스크립팅에 대한 자세한 정보를 찾을 수 있습니다.

메시 클라우드 스크립팅 장면 그래프는 메시 클라우드 스크립팅 구성 요소가 포함된 GameObject 아래의 장면에 추가하는 GameObjects로 제한됩니다. Mesh Cloud Scripting은 장면의 나머지 부분의 장면 계층 구조를 직접 볼 수는 없지만 Mesh 앱이 제공하는 API에 액세스할 수 있습니다. 예를 들어 장면의 사용자 목록을 가져오거나 선택한 개체에 반응할 수 있습니다.

구성 요소 및 메시 클라우드 스크립팅 장면 그래프

아래 다이어그램에서는 Unity 장면 및 메시 클라우드 스크립팅 장면의 계층이 동일합니다. Unity 장면 섹션의 파란색 노드는 GameObjects를 나타냅니다. 모든 GameObject에는 메시 클라우드 스크립팅 장면 그래프에 해당 TransformNode가 있습니다. TransformNode가 업데이트되면 Unity 장면에 해당하는 게임 개체의 변환이 동일한 값으로 업데이트됩니다.

Unity 및 Mesh 장면 계층 구조

Mesh Cloud Scripting API에는 전체 Unity 구성 요소 집합의 하위 집합에만 매핑되는 형식이 있습니다. Mesh Cloud Scripting API가 매핑할 수 없는 구성 요소를 사용하여 Unity 장면을 만드는 것은 여전히 유효합니다. 메시 클라우드 스크립팅에는 보이지 않습니다. 다이어그램에서 흰색 구성 요소의 메시 클라우드 스크립팅 장면 그래프에 해당 노드가 있습니다. 녹색 구성 요소는 그렇지 않습니다. Mesh Cloud Scripting 장면 그래프에는 파티클 시스템 노드가 없으므로 이 예제에서는 Unity 장면의 파티클 시스템 구성 요소가 해당 메시 클라우드 스크립팅 장면에 표시되지 않습니다. 그러나 주변 구성 요소 및 소유 게임 개체 는 메시 클라우드 스크립팅 장면 그래프에 있습니다 . 즉, Mesh Cloud Scripting은 파티클 시스템 자체가 클라우드 스크립팅에 보이지 않더라도 자체 게임 개체를 이동하여 파티클 시스템을 장면 주위로 이동할 수 있습니다.

Mesh Cloud Scripting API를 사용하면 노드를 복제할 수 있습니다. 앱이 Unity 장면에서 "A" 노드인 GameObjectParent에 해당하는 "A"를 복제하는 경우 파티클 시스템 메시 클라우드 스크립팅을 포함하여 GameParentObject전체 하위 트리를 복제합니다.

Mesh 클라우드 스크립팅 작성

Mesh Cloud Scripting에 대한 자세한 지침은 간단한 클라우드 스크립팅 프로젝트 만들기 및 프로그래머 가이드 문서에서 찾을 수 있습니다. 여기서는 간략한 개요를 제공합니다.

Mesh Cloud Scripting이 포함된 장면을 포함하는 일반적인 Unity 프로젝트는 디스크에서 다음과 같이 표시됩니다(폴더는 굵게 표시됨).

  • Unity 프로젝트
    • 자산
      • 장면
        • MyScene.unity
      • . MeshCloudScripting
        • MyScene
          • MyScene.csproj
          • Program.cs
          • scene.map
          • App.cs

MeshCloudScripting 구성 요소가 포함된 Unity 프로젝트의 각 장면에는 "에 포함된 동일한 이름의 해당 폴더가 있습니다. 자산 디렉터리의 MeshCloudScripting" 폴더입니다. Mesh 클라우드 스크립팅 구성 요소는 이 폴더와 초기 파일 집합을 만듭니다. 이 파일 집합은 비어 있지만 완전히 작동하는 클라우드 스크립팅 서비스로 컴파일됩니다. 일부 초기 파일은 위에 나와 있습니다. Program.cs 에는 다음을 수행하는 상용구 코드가 포함되어 있습니다.

App.cs 는 애플리케이션 논리를 호스트하는 클래스입니다. IHostedService 인터페이스를 구현하므로 두 개의 진입점이 있습니다StopAsync. StartAsync StartAsync 는 서비스를 시작할 준비가 되면 한 번 IHost 트리거됩니다 App . 또한 StopAsync 정상 종료를 IHost 수행할 때 트리거됩니다.

장면 표현

위의 목록에서 scene.map 파일을 확인합니다. 내부 세부 정보이지만 이해하는 것이 유용합니다. UI에서 수동으로 트리거되거나 Unity 장면이 편집기에서 재생될 때 Mesh 클라우드 스크립팅 구성 요소는 해당 Mesh Cloud Scripting 폴더에 scene.map 파일을 씁니다. 메시 클라우드 스크립팅 장면 계층 구조로 장면을 표현한 것입니다. Unity 형식은 Mesh Cloud Scripting 형식으로 변환됩니다. Mesh Cloud Scripting Service를 클라우드에 배포하는 경우 원래 Unity 장면을 실행할 필요가 없습니다. 대신 초기 장면 계층 구조를 정의하는 scene.map 파일을 로드합니다. Mesh 클라이언트가 Mesh Cloud Scripting Service연결되면 Mesh Cloud Scripting 계층 구조를 수신하고 Unity 장면을 일치하도록 업데이트합니다. 이를 위해 장면의 해당 Unity 개체에 매핑하는 데 사용되는 메시 클라우드 스크립팅 바인딩에 ID를 추가로 저장합니다.

참고: 위의 내용이 작동 하려면 scene.map 파일과 Unity 장면이 일치해야 합니다. 예를 들어 내보내기 오류로 인해 어떤 이유로든 검색되지 않으면 Mesh Cloud Scripting ServiceMesh 클라이언트가 연결되지 않습니다.

Mesh Cloud Scripting을 사용하여 환경 게시

Mesh Cloud Scripting을 사용하여 환경을 게시하면 환경 및 Mesh Cloud Scripting Service 가 Azure에 게시됩니다. 아래 다이어그램에 나와 있습니다.

환경 템플릿 및 클라우드 스크립팅을 클라우드에 업로드

장면을 변경할 때 새로 빌드되고 로컬로 실행되는 Mesh Cloud Scripting Service를 사용하여 장면을 미리 보려면 Unity에서 Play를 눌러야 합니다. 그런 다음 메시 업로더를 사용하여 수정된 환경을 게시합니다. 게시는 빌드 및 게시 환경에서 자세히 설명하고 빌드 및 게시 문서에 대한 클라우드 스크립팅 세부 정보를 제공합니다.

Mesh Cloud Scripting Service의 인증

클라우드 스크립팅 서비스는 사용자가 누구인지 목록을 유지할 수 있습니다. 사용자가 인증되면 클라우드 스크립팅 서비스에는 여러 세션에서 사용자에 대한 영구 식별자가 있습니다.

즉, Mesh Cloud Scripting Service의 인증 흐름은 처음부터 추가적인 노력이 필요하지 않습니다. 이는 전적으로 암시적이며 관련 당사자는 토큰을 가져오고 자동으로 유효성을 검사하는 작업을 수행합니다.

인증 흐름과 관련된 당사자는 다음과 같습니다.

메시 도구 키트: 클라우드 스크립팅 서비스를 클라우드에 배포하는 도구로서 클라우드 스크립팅 서비스에서 인증 토큰의 Service Mode 유효성을 검사하는 데 사용하는 도구를 선택할 수 있습니다. 이 작업은 메시 업로더 UI의 환경 구성 설정에서 수행할 수 있습니다.

Microsoft Mesh 서비스: 토큰 발급을 담당합니다. 토큰이 없으면 사용자는 클라우드 스크립팅과 상호 작용할 수 없습니다.

Microsoft Mesh: 사용자가 Mesh Cloud Scripting과 상호 작용하는 방법에 대한 진입점입니다. Microsoft Mesh 클라이언트는 사용자를 대신하여 Microsoft Mesh 서비스에서 액세스 토큰을 요청할 책임이 있습니다.

Mesh Cloud Scripting Service: Microsoft Mesh Service에 대한 연결 요청에서 수신하는 토큰의 유효성을 검사한 다음 토큰에서 영구 사용자 식별자를 선택합니다.

파티는 아래 그림과 같이 함께 작동합니다.

인증 흐름

다음 단계