该app.js文件提供了两个JavaScript函数,您可以在HTML播放器页面中调用它们,以允许用户将事件和命令从浏览器发送到Unreal Engine应用程序:
emitCommand 可以向游戏发送预设的命令列表,以更改分辨率,执行控制台命令或降低编码器的比特率。请参阅下面的使用emitCommand函数。
emitUIInteraction 将任意字符串或JavaScript对象发送到游戏。使用此功能可以从玩家UI发送自己的自定义命令,您可以在游戏逻辑中进行响应以在应用程序中产生所需的任何效果。请参阅下面的使用emitUIInteraction函数。
调用该emitCommand 函数时,必须向其传递一个JavaScript对象。该对象必须包含与以下字符串之一匹配的键:
调用该emitUIInteraction 函数时,可以向其传递单个字符串或JavaScript对象。例如:
emitUIInteraction("MyCustomCommand");或者
let descriptor = {
LoadLevel: "/Game/Maps/Level_2"
PlayerCharacter: {
Name: "Shinbi"
Skin: "Dynasty"
}
}
emitUIInteraction(descriptor);UE4接收并解析JS发送的蓝图:

您需要绑定一次此事件,通常是在游戏开始时。每当连接到您的虚幻引擎应用程序实例的任何播放器HTML页面调用该emitUIInteraction函数时,无论传递到的输入如何,都会自动调用您的自定义事件emitUIInteraction。
您分配的自定义事件(例如,上图中的UI Interaction节点)具有一个名为Descriptor的输出,您可以使用该输出检索该emitUIInteraction 函数发送给您的Unreal Engine应用程序的字符串。您可以使用该值来确定每次emitUIInteraction 调用游戏代码时需要如何响应。
例如,以下蓝图测试以查看给定的输入是否emitUIInteraction 包含字符串“ MyCustomCommand”,并调用自定义函数来处理事件:

Get Json String Value节点中,Filed Name参数可以获取对象中的对象值;

蓝图

JS中增加方法:
function myHandleResponseFunction(data) {
console.warn("Response received!");
switch (data) {
case "MyCustomEvent":
... // handle one type of event
case "AnotherEvent":
... // handle another event
}
}通过调用addResponseEventListener 提供的函数来注册您的侦听器函数app.js。您为该函数传递事件侦听器和函数的唯一名称。例如:
addResponseEventListener("handle_responses", myHandleResponseFunction);如果您需要删除事件监听器,请调用removeResponseEventListener 并传递相同的名称。例如:
removeResponseEventListener("handle_responses");如果要传递更复杂的数据,可以将传递给“ 发送像素流响应”节点的字符串格式化为JSON。例如:

然后,在JavaScript事件处理程序函数中,使用 JSON.parse(data)将该字符串解码回JavaScript对象。