Unreal Engine 5で外部サービスにREST APIで接続する方法

はじめに

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で接続するには、下記を実施します。

  1. Unreal Engine 5にFetchプラグインをインストールする
  2. Unreal Engine 5で任意のプロジェクトを作成する
  3. Unreal Engine 5でFetchプラグインを有効にする
  4. REST APIで接続するサービスを準備する(今回はAzure FunctionsのHTTPトリガーで、REST APIで接続するサービスを準備した)
  5. 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 Task Run(
            [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 からデータを取得して活用することも可能になります。

執筆担当者プロフィール
株木 誠

株木 誠

先端技術部の株木です。 Azure OpenAI Service を活用するアプリ開発を担当しています。

担当記事一覧