次の方法で共有


Mesh 201 チュートリアル 第 5 章: ライブ気象データを取得する

この章では、ステーション 4 に進み、メッシュ クラウド スクリプトを使用して内部ソースまたはパブリック ソースからデータを取得し、シーン内の 3D コンテキストで視覚化する方法について説明します。 第 1 章で説明したように、ここでの前提として、出席者はこのステーションを使用して、風力発電所の建設を検討している 3 つの場所の気象条件について学習することができます。 また、出席者は、対話型の地球儀をクリックして、3 つの場所のライブ気象データを表示できます。

ステーション 4 と 5 は、前のステーションの反対側にある Sphere Terrace の端に位置します。

__________________________________

このステーションをセットアップする

このステーションを完成させるには、気象データ API へのアクセスを許可するキーをコードに挿入する必要があります。 後でワークフローを中断する必要がないように、このキーを取得しておきます。

  1. weatherapi.com サインアップ ページに移動します。

  2. 移動先のページで、手順に従って試用版プランにサインアップします。

    __________________________________

    受信したメールを開き、アカウントをアクティブにしてから、サイトにログインする必要があります。

  3. [Welcome Back] ページで、[Pro Plus Plan] をクリックします。

    __________________________________

  4. このチュートリアルでは、有料プランは必要ありません。 "FREE" の下にある [Downgrade (ダウングレード)] ボタンをクリックし、ポップアップ表示されるダイアログで [Close (閉じる)] をクリックします。

    __________________________________

  5. 左側のメニューの [Dashboard (ダッシュボード)] で、[API] を選択します。

    __________________________________

  6. 「API Key (API キー)」フィールドの横にある [Copy (コピー)] ボタンを選択し、テキスト エディターにキーを貼り付けて、テキスト ファイルを保存します。

    __________________________________

    コピー操作が成功すると、[Copy (コピー)] ボタンのテキストが [Copied (コピー済み)] に変わります。

Mesh クラウド スクリプトのプレハブを追加する

  1. StartingPoint シーンを開きます。

  2. 階層で、空の領域を右クリックし、コンテキスト メニューで [Mesh ツールキット] > [クラウド スクリプトの設定] を選択します。

    __________________________________

    これにより、同じ名前のコンポーネントがアタッチされた Mesh Cloud Scripting という名前の GameObject が追加されます。

    __________________________________

    クラウド スクリプトの制御下に置く予定の GameObject は、Mesh Cloud Scripting GameObject の子として追加する必要があります。

    : Mesh Cloud Scripting コンポーネントには、Enable Visual Scripting という名前のプロパティが含まれています。 これにより、Mesh Cloud Scripts は Visual Scripts と通信できるようになります。 これはオフのままにしておくことができます。

ステーション 4 のプレハブを追加する

  1. [プロジェクト] フォルダーで、[アセット] > [MeshCloudScripting] に移動し、[4: GlobeWithCloudScripting]階層にドラッグし、Mesh Cloud Scripting の子オブジェクトとして配置します。

    __________________________________

    このプレハブには、テキスト情報ボックスと、地球儀のモデルを含む Earth という名前の入れ子になったプレハブが用意されます。

    __________________________________

  2. ステーション 4 の正面に表示されるようにビューを調整します。

    __________________________________

weatherapi.com の API キーを挿入する

  1. 階層で、Mesh Cloud Scripting GameObject を選択します。

  2. インスペクターで、Mesh Cloud Scripting コンポーネントに移動し、[アプリケーション フォルダーを開く] をクリックします。

    __________________________________

    これにより、Windows エクスプローラーで Mesh Cloud Scripting のファイルを含むフォルダーが開きます。

  3. コード エディターで appsettings.UnityLocalDev.json という名前のファイルを開きます。 ファイル内の最後の 4 行のコードには、構成設定が含まれています。

    __________________________________

    以下の最初の行については何も変更する必要はありません。

    "WEATHER_API_URI": "http://api.weatherapi.com/v1/current.json?key="

    ただし、次の行の「Paste Weather API key here (ここに Weather API キーを貼り付ける)」というテキストを、先ほどコピーした API キーに置き換えます。

    __________________________________

    最後の 2 行は無視してかまいません。次の章で作業します。

  4. JSON ファイルを保存し、閉じます。

csproj ファイルを更新する

  1. Mesh Cloud Scripting ファイルを表示するエクスプローラー ウィンドウで、コード エディターで StartingPoint.csproj という名前のファイルを開きます。

    __________________________________

  2. 次のテキストをコピーします。

    <ItemGroup> <Folder Include="WeatherAPI\" /> </ItemGroup>

    ...次に、ファイルの末尾で </Project> のすぐ上のファイルに貼り付けます。

    __________________________________

    これにより、ローカル WeatherAPI フォルダーのスクリプトがいくつか含まれるようにします。

    __________________________________

  3. ファイルを保存して閉じます。

地球儀を対話形式にするコードを追加する

  1. Mesh Cloud Scripting ファイルを表示するエクスプローラー ウィンドウで、コード エディターで App.cs という名前のファイルを開きます。

    __________________________________

    まず最初に行うことは、出席者が地球儀をクリックしたときに、気象データの表示が更新されるようにすることです。

  2. App.cs ファイルで、 StartAsync() メソッド内にある最初の "コードをここに貼り付ける" コメントを見つけます。

    __________________________________

  3. 次のコードをコピーします。

        var refreshButton = _app.Scene.FindFirstChild("Earth", true) as TransformNode;
        var refreshButtonNode = refreshButton?.FindFirstChild<InteractableNode>(true);
    
        if (refreshButtonNode != null)
        {
            refreshButtonNode.Selected += async (_, _) =>
            {
                await GetCurrentWeather(_latlong);
            };
        }
    
  4. 先ほど見つけた "コードをここに貼り付ける" コメントを、コピーしたコードに置き換えます。

    __________________________________

    このコードは次のことを行います。

    • シーン内の Earth GameObject を使用して、refreshButton 変数を初期化します。
    • Earth GameObject にアタッチされた InteractableNode を使用して、refreshButtonNode 変数を初期化します。 (シーン内の GameObject に Mesh Interactable Setup コンポーネントがアタッチされている場合 (Earthが行う)、コンポーネントによって Mesh クラウド スクリプト InteractableNode) が追加されます。)
    • 参加者が地球をクリックすると、InteractableNode の Selected イベントが発生し、 GetCurrentWeather メソッドが呼び出されます。 これにより、気象データを取得するための HTTP 要求 が生成されます。
  5. ファイルを保存します。

作業をテストする

  1. Unity エディターでプロジェクトを保存し、[再生] ボタンを押します。

  2. アバターは、最初の 3 つのステーションを含む Sphere Terrace の側に生成されます。 Sphere Terrace の反対側に移動し、ステーション 4 の前に自分自身を配置します。

    __________________________________

  3. 気象データを表示するには、地球儀のどこかを場所をクリックします。 気温、平均風速、ピーク風速は、1 ) ラゴス、ナイジェリア、2 ) ダブリン、アイルランド、3 ) レドモンド、ワシントン州の 3 つの都市で示されています。

    __________________________________

  4. 完了したら、もう一度[再生] ボタンを押して再生モードを終了します。

次のステップ