はじめに
Unreal Engine 5で外部サービスにREST APIで接続する方法について調べてみました。
今回は、外部サービスとしてAzure Functions上にサンプルアプリケーションを作成し、REST APIで接続してみましたので下記に記載します。
作業概要
Unreal Engine 5からREST APIで接続するのに、Fetchプラグインを使用しました。
Fetchプラグインを使用すると、Unreal Engine 5のブループリントを使用してREST APIで接続する事ができます。
※Fetchプラグインは有料です。
Fetch - A Simple HTTP Client:コードプラグイン - UE マーケットプレイス
Unreal Engine 5からREST APIで接続するには、下記を実施します。
- Unreal Engine 5にFetchプラグインをインストールする
- Unreal Engine 5で任意のプロジェクトを作成する
- Unreal Engine 5でFetchプラグインを有効にする
- REST APIで接続するサービスを準備する(今回はAzure FunctionsのHTTPトリガーで、REST APIで接続するサービスを準備した)
- Unreal Engine 5のブループリントに、Fetchプラグインによる接続を設定する
作業手順
Unreal Engine 5にFetchプラグインをインストールする
Fetchプラグインを購入すると、Unreal Engine 5のエンジンにインストールできます。
Unreal Engine 5で任意のプロジェクトを作成する
今回は、サードパーソンプロジェクトを作成しました。
Unreal Engine 5でFetchプラグインを有効にする
Fetchをチェックして有効化した後は、画面右下のボタンを押してプロジェクトを再起動して下さい。
REST APIで接続するサービスを準備する
今回はAzure FunctionsのHTTPトリガーで、REST APIで接続するサービスを準備しました。
デプロイしたソースコードは下記です。
※名前、年齢を格納したjsonデータを返します。
using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System.Net.Http; using System.Net; using System.Text; namespace FunctionApp20230110 { public static class Function1 { [FunctionName("Function1")] public static async TaskRun( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); Person p = new Person(); p.Name = "hoge"; p.Age = 45; string json_str = JsonConvert.SerializeObject(p); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); var response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StringContent(json_str, Encoding.UTF8, "application/json"); return response; } } public class Person { public string Name { get; set; } public int Age { get; set; } } }
試しに、Postmanで動作を確認します。
名前、年齢がjsonデータで取得できました。
Unreal Engine 5のブループリントに、Fetchプラグインによる接続を設定する
レベルブループリントで下記を設定します。
ブループリントでFetch Jsonを配置して、Azure FunctionsのURLを設定します。
※Options MethodにGETを指定します。
取得したjsonデータは As Object と Get String を使用して必要な文字列を抽出できます。
※下記の画像ではjsonデータからNameを抽出しています。
今回は、取得したNameをPrint Stringで画面に出力します。
実行してみます。
画面左上に、今回取得したNameの内容が出力されました。
まとめ
Unreal Engine 5からREST APIで接続してデータを取得することができました。
Fetchプラグインでは、Get、Post、Put、Deleteメソッドを実行する事ができます。
Unreal Engine 5からREST APIで接続ができると、様々な外部サービスから取得したデータをUnreal Engine 5の世界に反映する事ができます。
Azure IoT Hub や Azure Digital Twins からデータを取得して活用することも可能になります。