Closed8

[UE5]BlueprintとWebBrowserの通信のやり方を考える

tamfoitamfoi

あまりユースケースがないかもしれないがBlueprintとWebBrowserの通信について考える
ここでいうWebBrowserはWebBrowserプラグインによって追加されるUMGのことである

UEバージョン:5.1.1

tamfoitamfoi

Blueprint から WebBrowser へ

tamfoitamfoi

Blueprint

ExecuteJavascriptノードを使ってJavaScriptを実行
下記の例だとbodyタグに設定したイベントを実行している

実際はdetailの中身は下記のようにJson Blueprint Utilitiesを使って組み立てる必要がある

JavaScript

EventListenerで受け取る

document.body.addEventListener("RequestBrowserEvent", (e) => {
  /** 処理 */
});
tamfoitamfoi

WebBrowser から Blueprint へ

tamfoitamfoi

自分が見た限りBlueprintからWebBrowser側をのぞけるノードは下記3点

  • GetTitleText(titleタグの内容)
  • GetUrl(開いているURL)
  • OnConsoleMessage(console.logをフックしていてその内容を受け取ることができる)

どれもスマートではないがイベントとしてうけとれるOnConsoleMessageが良さそうだった

tamfoitamfoi

Javascript

送りたい内容を文字列にしてconsole.logで流す。下記ではObjectをJSON文字列にしている

console.log(
  JSON.stringify({
    event: "SampleEvent",
    payload: "SamplePayload",
  })
);

Blueprint

console.logがブラウザ側で実行されるとBlueprint側ではOnConsoleMessageが実行される。上記の内容だとJSON文字列が送られてくるので下記のようにJsonObjectに変換してあとは好きに処理する

tamfoitamfoi

通信ごとのコールバックについての考え

tamfoitamfoi

今のところそれぞれの通信は送りっぱなしで送り先で成功したかとか失敗したとかは分からない
ただお互いに通信自体はできているので作ろうと思えば作れるとは思う

このスクラップは2023/03/20にクローズされました