enebular に Unity が GET リクエストした連携サンプル
Unity のバージョン
2020.3.48f1 のバージョンでプロジェクトを作成してます。
それ以降のバージョンでも動くプログラムのはずです。
Unity に Cube を準備
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
今回の Discover Flow はこちらです。
https://enebular.com/discover/flow/c85e75fe-7a15-4bce-9430-471a3317383c
インポートボタンをクリックして、今回作業するプロジェクトを選択してプロジェクトにインポートします。
インポートできたら編集ボタンをクリックして Web エディタを開きます。
サーバー URL 把握
これで enebular によるサーバーができました。
今回は、この一時的に使っているエディタそのもののサーバー URL で試してみます。
右上の i というアイコンをクリックします。
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 ボタンを押して動かしてみます。
enebular 側で debug ノードでデータが受信されて、このようにやり取りが成功しています!今回は何も値がないです。
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 ボタンを押して動かしてみます。
enebular 側で debug ノードでデータが受信されて、今回受け取ったパラメータが受け取れています。
Unity 側のコンソールで送受信が成功します。enebular が受け取ったデータをそのままオウム返しするので {"value":"12345"}
が返答されます。
余談
- 日本語を GET リクエストのパラメータにうまく含めるには URL エンコードする処理を加えましょう
- JSON データとして送るのであれば data という値のパラメータに文字列で JSON を仕込んだうえで Unity で送りつつ enebular で受け取った文字列から JSON データをパースするとよいでしょう。