该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对象。