Share via


クラウド スクリプトの基本的な概念

Mesh Cloud Scripting と Mesh Visual Scripting の概要を確認する

Mesh クラウド スクリプトと MonoBehaviours の違い

Mesh Cloud Scripting と MonoBehaviours には、いくつかの大きな違いがあります。

  • クラウド スクリプティング サービスは、(Unity API ではなく) Mesh Cloud Scripting API に対して記述されます。
  • Cloud Scripting Services は、(クライアントではなく) 別のプロセスでクラウドで実行され、その効果は接続されているすべてのクライアントに自動的に同期されます。

アーキテクチャの概要

Mesh Cloud Scripting を有効にするために、 Mesh Cloud Scripting Service というアプリケーション サービスが、指定した特定の Azure リソース グループにデプロイされます。 クラウド スクリプトは Azure バックエンドで実行され、クライアントが接続するエンドポイントを含むコンテナーで実行されている一連のサーバー C# スクリプトで構成されます。 次の図では、Cloud Scripting Service に接続する 2 つのクライアントがあることがわかります。 Cloud Scripting Service には、独自の権限のあるシーン グラフがあります (図では "A" とマークされています)。 Cloud Scripting Service は、Mesh Cloud Scripting シーン グラフ API を介してこのシーン グラフと対話します。

クラウド スクリプト アーキテクチャの図。

Mesh Cloud Scripting シーン グラフは、クラウドから接続されているすべてのクライアントに自動的に同期されます。 各クライアントには、Mesh Cloud Scripting シーン グラフの同じコピー (図で "B" とマークされています) があり、これは権限のあるクラウド バージョンと同期されます。 Mesh Cloud Scripting Service がクラウド内のシーン グラフに変更を加えると、これらの変更はすべてのクライアントのコピーに反映されます。

各クライアントで、Unity Mesh ランタイムは、Mesh Cloud Scripting シーン グラフのクライアントのインスタンスの変更に対応し、Unity シーンを更新してその状態を反映します。 Mesh Cloud Scripting シーン グラフ API と Unity シーン グラフ API は異なりますが、互いに密接にマップされ、同じ構造または類似の構造を持ちます。

Mesh Cloud Scripting、Game Objects、Mesh Cloud Scripting Scene Graph

最終的に Mesh アプリのイベントに表示されるオブジェクトは、次の 2 つのカテゴリに分けることができます。

  1. Unity で環境に追加するオブジェクト。

  2. イベントをカスタマイズするオブジェクト。 これらは環境の一部ではなかったため、Mesh Cloud Scripting では認識されません。

シーンの構築

Mesh Cloud Scripting を有効にするには、シーンに Mesh Cloud Scripting コンポーネントが必要です。

GameObject にアタッチされている Mesh Cloud Scripting コンポーネントのスクリーン ショット。

コンポーネントは、作成したスクリプトを管理し、Mesh アプリの編集時と実行時の両方で Unity シーンにバインドする役割を担います。 Mesh Cloud Scripting はスタンドアロンテクノロジですが、Unity と緊密に統合されています。 Mesh Cloud Scripting GameObject を追加する手順については、「 単純なクラウド スクリプト プロジェクトを作成する 」という名前の記事と、スクリプト作成の詳細については、「 プログラマー ガイド 」セクションを参照してください。

Mesh Cloud Scripting シーン グラフは、Mesh Cloud Scripting コンポーネントを含む GameObject の下のシーンに追加する GameObject に限定されます。 Mesh Cloud Scripting はシーンの残りの部分のシーン階層を直接表示することはできませんが、Mesh アプリが提供する API にアクセスできます。たとえば、シーン内のユーザーの一覧を取得したり、選択されているオブジェクトに反応したりできます。

コンポーネントとメッシュ クラウド スクリプト シーン グラフ

次の図では、Unity シーンと Mesh Cloud Scripting Scene の階層が同じであることに注意してください。 [Unity シーン] セクションの青いノードは GameObjects を表します。すべての GameObject には、Mesh Cloud Scripting Scene Graph に対応する TransformNode があります。 TransformNode が更新されると、Unity シーンで対応するゲーム オブジェクトの変換が同じ値に更新されます。

Unity とメッシュ シーンの階層

Mesh Cloud Scripting API には、Unity コンポーネントの完全なセットの サブセット にのみマップされる型があります。 Mesh Cloud Scripting API でマップできないコンポーネントを含む Unity シーンを作成することは、引き続き有効です。Mesh Cloud Scripting では見えなくなります。 この図では、白い色のコンポーネントには、Mesh Cloud Scripting シーン グラフ内の対応するノードがあります。緑のコンポーネントは表示されません。 Mesh Cloud Scripting シーン グラフにはパーティクル システム ノードがないため、この例では、Unity シーンのパーティクル システム コンポーネントは、対応する Mesh Cloud Scripting シーンには表示されません。 ただし、その周囲のコンポーネントと所有しているゲーム オブジェクト 、Mesh Cloud Scripting シーン グラフにあります。 つまり、Mesh Cloud Scripting は、パーティクル システム自体がクラウド スクリプトに対して見えない場合でも、所有するゲーム オブジェクトを移動することで、シーンの周囲にパーティクル システムを移動できます。

Mesh Cloud Scripting API を使用すると、ノードの複製が可能になります。 アプリが "A" (Unity シーンの "A" ノード、GameObjectParent に対応する) のクローンを作成すると、パーティクル システム Mesh Cloud Scripting が表示されないなど、GameParentObject のサブ ツリー全体が複製されます。

Mesh クラウド スクリプトの作成

Mesh Cloud Scripting の詳細な手順については、 単純なクラウド スクリプト プロジェクトの作成 に関する記事と プログラマ ガイドに 関する記事を参照してください。 ここでは、簡単な概要について説明します。

Mesh Cloud Scripting を使用したシーンを含む一般的な Unity プロジェクトは、ディスク上では次のようになります (フォルダーは太字で表示されます)。

  • Unity プロジェクト
    • アセット
      • Scenes
        • MyScene.unity
      • .MeshCloudScripting
        • MyScene
          • MyScene.csproj
          • Program.cs
          • scene.map
          • App.cs

MeshCloudScripting コンポーネントを含む Unity プロジェクトの各シーンには、 に含まれる同じ名前の対応するフォルダーがあります。Assets ディレクトリ内の MeshCloudScripting" フォルダー。 Mesh Cloud Scripting コンポーネントは、このフォルダーとそのファイルの初期セットを作成します。このファイルは完全に動作しますが、空の Cloud Scripting Service にコンパイルされます。 最初のファイルの一部を上に示します。 Program.cs には、次の処理を行う定型コードが含まれています。

  • サービスを起動するように IHostBuilder を構成するApp

  • IHost インスタンスを構築する。

  • インスタンスを IHost 実行して完了します。

App.cs は、アプリケーション ロジックをホストするクラスです。 IHostedService インターフェイスを実装するため、エントリ ポイントと という 2 つのエントリポイントがあります StartAsyncStopAsyncStartAsync は、 がサービスを IHost 開始 App する準備ができたときに 1 回トリガーされます。 も、 StopAsync が正常なシャットダウンを実行しているときに IHost トリガーされます。

シーンリプレゼンテーション

上の一覧の scene.map ファイルに注意してください。 これは内部の詳細ですが、理解すると便利です。 UI で手動でトリガーされた場合、または Unity シーンがエディターで再生されると、Mesh Cloud Scripting コンポーネントによって、対応する Mesh Cloud Scripting フォルダーに scene.map ファイルが書き込まれます。 これは、シーンを Mesh Cloud Scripting Scene 階層として表現したものです。Unity 型は Mesh Cloud Scripting 型に変換されます。 Mesh Cloud Scripting Service がクラウドにデプロイされている場合、元の Unity シーンを実行する必要はありません。 代わりに、初期シーン階層を定義する scene.map ファイルが読み込まれます。 Mesh クライアントは、 Mesh Cloud Scripting Service に接続すると、Mesh Cloud Scripting 階層を受け取り、一致するように Unity シーンを更新します。 これを可能にするために、さらに、シーン内の対応する Unity オブジェクトにマップするために使用される Mesh Cloud Scripting バインドに ID を格納します。

: 上記を機能させるには、 scene.map ファイルと Unity シーンが一致している必要があります。 何らかの理由でエクスポート エラーの結果として、何らかの理由で失敗した場合、これは検出され、 Mesh Cloud Scripting Service と Mesh クライアントは接続されません。

Mesh クラウド スクリプトを使用した発行環境

Mesh Cloud Scripting を使用して環境を発行すると、環境と Mesh Cloud Scripting Service が Azure に発行されます。 これは次の図に示されています。

環境テンプレートとクラウド スクリプトをクラウドにアップロードする

シーンを変更するときは、Unity で [再生] を 押して、新しくビルドされ、ローカルで実行されている Mesh Cloud Scripting Service でシーンをプレビューする必要があります。 次に、Mesh Uploader を使用して変更された環境を発行します。 発行の詳細については、ビルドと発行に関する記事の「 環境のビルドと発行 」および 「クラウド スクリプトの詳細を提供する」 を参照してください。

Mesh Cloud Scripting Service での認証

クラウド スクリプト サービスは、ユーザーの一覧を保持できます。 ユーザーが認証されると、クラウド スクリプト サービスには、複数のセッションにわたってユーザーの永続的な識別子が割り当てられます。

とは言え、Mesh Cloud Scripting Service の認証フローでは、最後から追加の作業は必要ありません。 これは完全に暗黙的であり、関係する関係者はトークンを取得し、自動的に検証する作業を行います。

認証フローに関係する関係者を次に示します。

Mesh ツールキット: クラウド スクリプト サービスをクラウドにデプロイするツールとして、クラウド スクリプト サービスが認証トークンの検証に使用するツールを選択 Service Mode できます。 これは、Mesh Uploader UI の [環境設定] 設定で行うことができます。

Microsoft Mesh Service: トークンの発行を担当します。 トークンがないと、ユーザーはクラウド スクリプトを操作できません。

Microsoft Mesh: ユーザーが Mesh Cloud Scripting と対話する方法のエントリ ポイント。 Microsoft Mesh クライアントは、ユーザーに代わって Microsoft Mesh Service にアクセス トークンを要求する責任を負います。

Mesh Cloud Scripting Service: Microsoft Mesh Service に対する接続要求から受信したトークンを検証し、トークンから永続的なユーザー識別子を選択します。

両当事者は、次に示すように連携します。

認証フロー

次の手順