enebular に Unity が GET リクエストした連携サンプル

Unity のバージョン

2020.3.48f1 のバージョンでプロジェクトを作成してます。

それ以降のバージョンでも動くプログラムのはずです。

Unity に Cube を準備

be9e58c3e9aa39df46fed6ea186ba072

Unity に Cube を準備します。今回は Play ボタンで起動するだけで動作を目指します。

Cube に CubeEvent.cs を割り当て

Cube に CubeEvent.cs を割り当てます。

using UnityEngine;
using System.Collections;       // IEnumerator のための参照
using UnityEngine.Networking;   // UnityWebRequest のための参照

public class CubeEvent : MonoBehaviour
{
    // アクセスする URL
    string urlAPI = "ここにURLを入れる";

    // 起動時の動作
    void Start()
    {
        // HTTP GET リクエストを非同期処理を待つためコルーチンとして呼び出す
        StartCoroutine("GetAPIData");
    }

    // GET リクエストする本体
    IEnumerator GetAPIData()
    {
        // HTTP リクエストする(GET メソッド) UnityWebRequest を呼び出し
        // アクセスする先は変数 urlGitHub で設定
        UnityWebRequest request = UnityWebRequest.Get(urlAPI);

        // リクエスト開始
        Debug.Log("リクエスト開始");

        yield return request.SendWebRequest();

        // 結果によって分岐
        switch (request.result)
        {
            case UnityWebRequest.Result.InProgress:
                Debug.Log("リクエスト中");
                break;

            case UnityWebRequest.Result.ProtocolError:
                Debug.Log("ProtocolError");
                Debug.Log(request.responseCode);
                Debug.Log(request.error);
                break;

            case UnityWebRequest.Result.ConnectionError:
                Debug.Log("ConnectionError");
                break;

            case UnityWebRequest.Result.Success:
                Debug.Log("リクエスト成功");

                // コンソールに表示
                Debug.Log($"responseData: {request.downloadHandler.text}");

                break;
        }


    }
}

今回の Discover Flow

8d90c2b4a7097fd910b8ecc1815b721f

今回の Discover Flow はこちらです。

https://enebular.com/discover/flow/c85e75fe-7a15-4bce-9430-471a3317383c

インポートボタンをクリックして、今回作業するプロジェクトを選択してプロジェクトにインポートします。

インポートできたら編集ボタンをクリックして Web エディタを開きます。

サーバー URL 把握

これで enebular によるサーバーができました。

今回は、この一時的に使っているエディタそのもののサーバー URL で試してみます。

8355eb99ba9f5b82bf84301dbb7574ae

右上の i というアイコンをクリックします。

31d22a4c38d78b46dc9d6623573f5136

URL をテキスト選択してコピーします。

Unity の CubeEvent.cs 変更

    // アクセスする URL
    string urlAPI = "ここにURLを入れる";

こちらの ここにURLを入れる の部分に、さきほどのサーバー URLに /api/message を加えたものを上書きして保存します。

もし https://hogehoge123456789.herokuapp.com/ がサーバー URL なら https://hogehoge123456789.herokuapp.com/api/message となります。

動かしてみる

ここまで設定できたら Unity で Play ボタンを押して動かしてみます。

9da7c63b8cda0eae4455f9609a5c0381

enebular 側で debug ノードでデータが受信されて、このようにやり取りが成功しています!今回は何も値がないです。

980472611aaaee42a298204fb9056f4e

Unity 側のコンソールで送受信が成功します。enebular が受け取ったデータをそのままオウム返しするので {} が返答されます。

GET リクエストのパラメータを送ってみる

Unity 側で GET リクエストのパラメータを送ってみます。

    // アクセスする URL
    string urlAPI = "ここにURLを入れる";

こちらにきほどのサーバー URLに /api/message を加えたものを上書きしましたが、さらに末尾に ?value=12345 と加えて保存しましょう。

もし https://hogehoge123456789.herokuapp.com/ がサーバー URL なら https://hogehoge123456789.herokuapp.com/api/message?value=12345 となります。

Unity で Play ボタンを押して動かしてみます。

dc99fcc2c757d2d34e3a8b73133319a4

enebular 側で debug ノードでデータが受信されて、今回受け取ったパラメータが受け取れています。

34eef9b8f9d894838491e0434164c9f8

Unity 側のコンソールで送受信が成功します。enebular が受け取ったデータをそのままオウム返しするので {"value":"12345"} が返答されます。

余談

  • 日本語を GET リクエストのパラメータにうまく含めるには URL エンコードする処理を加えましょう
  • JSON データとして送るのであれば data という値のパラメータに文字列で JSON を仕込んだうえで Unity で送りつつ enebular で受け取った文字列から JSON データをパースするとよいでしょう。

results matching ""

    No results matching ""