サーバから動的なデータを表示してみよう

9d2c38e6fe48e61528f6b2d34370768f

この章で学ぶこと

サーバから動的なデータを表示してみます。

Codespace の起動

0a3a35f3418068b7713ddaa729f2c660

GitHub にログインした状態で https://github.com/codespaces にアクセスします。

34de49185c6b28fb938519084d5b36fe

Codespaces のページです。さきほど使っていた Codespace をクリックして起動します。

サーバの起動

0a3a35f3418068b7713ddaa729f2c660

  • ターミナルで npx node-red -u week05-chapter03 をサーバ起動
  • ポートタブで今回のサーバ起動を公開
  • シークレットウィンドウで今回のサーバが公開されているか確認します

✅ポイント

  • color というデータベースがあります
  • 以前のとおり JSON Server でシンプルなデータベースが使えます

今回の Unity シーンを起動

6049726527f3133083e8ca07d1e6261c

Project タブから Assets > Scenes を選択します。Week05-Chapter03 をダブルクリックして起動しましょう。

今日は、このプログラムをベースに、送る値や受け取る値を Unity に使っていきます。

✅ポイント

  • GetAPI に Week05_Chapter03_GetAPI が割り当てられているのでこちらでつないでみましょう

JSON データを受け取って Unity で使えるようにしましょう

02db792fd629a56812a205234a08ae44

JSON データは気にせず、まずつないでみましょう。

サーバから サーバーURL + /color を読み込みます。urlAPI 変数をうまく変更してつないでみましょう。

今回は

{
  "data": [
    {
      "id": "33d3",
      "color": "Red"
    },
    {
      "id": "230d",
      "color": "Yello"
    },
    {
      "id": "93b3",
      "color": "Blue"
    }
  ]
}

という data のオブジェクトの中に配列が入っています。

JSON データでの配列は Unity では List 型で変換できます。受信した JSON データを Unity で扱うデータにする ResponseData ベースクラスを調整しましょう。

各 Cube にテキストで color 値を割り振る

02db792fd629a56812a205234a08ae44

// データを一つずつ反映する
for (int i = 0; i < 3; i++)
{

}

JSON データを Unity データで扱えるようになったあと、各 Cube にテキストで Color 値を割り振れるように for 文を用意しています。 Cube 内の MessageText という TextMesh にテキストを反映してみましょう。

各 Cube に Color 値によって Cube の色を変更してみましょう

02db792fd629a56812a205234a08ae44

各 Cube に Color 値によって Cube の色を変更してみましょう。

ヒント : https://docs.unity3d.com/ja/2021.2/ScriptReference/Material-color.html

ややリアルタイム反映を作ってみよう

02db792fd629a56812a205234a08ae44

ここまでできると、Start 関数で GetDataCore を呼び出すことで最初の表示時に動作する流れを、InvokeRepeating 関数を使えば、値を変更するとリアルタイムに値が変わるようにできます。

InvokeRepeating("GetDataCore", 1.0f, 1.0f); で、第 2 引数は 1 秒後開始を意味していて、第 3 引数は 1 秒ごと実行される指定でやってみましょう。

void Start()
{
    // 開始時に読み込み開始
    // GetDataCore();

    InvokeRepeating("GetDataCore", 1.0f, 1.0f);
}

このように GetDataCore の直実行をコメントアウトして InvokeRepeating を指定してみましょう。

{
  "color": [
    {
      "id": "33d3",
      "color": "Red"
    },
    {
      "id": "230d",
      "color": "Yello"
    },
    {
      "id": "93b3",
      "color": "Blue"
    }
  ]
}

./week05-chapter03/db/db.json の JSON データを修正してみましょう。

    {
      "id": "230d",
      "color": "Yello"
    }

Yello を Blue に変更してみます。

今回の Codespace の終了

0a8b4cfb807e57ea1382292a757c6899

今回の Codespace 終了しておきましょう。

results matching ""

    No results matching ""