zoukankan      html  css  js  c++  java
  • ue4之WebUI与引擎之间的通信

    之前的项目,是使用socket来实现h5页面和引擎之间的通信的,但其实有时候有些简单的指令没有必要通过socket来实现,毕竟socket还存在一个网络时延的问题。

    所以,这个时候我们就可以直接事先双方定义好的函数来实现通信。

    1.H5页面事件监听

    "object"!=typeof ue||"object"!=typeof ue.interface?("object"!=typeof ue&&(ue={}),ue.interface={},ue.interface.broadcast=function(e,t){if("string"==typeof e){var o=[e,""];void 0!==t&&(o[1]=t);var n=encodeURIComponent(JSON.stringify(o));"object"==typeof history&&"function"==typeof history.pushState?(history.pushState({},"","#"+n),history.pushState({},"","#"+encodeURIComponent("[]"))):(document.location.hash=n,document.location.hash=encodeURIComponent("[]"))}}):function(e){ue.interface={},ue.interface.broadcast=function(t,o){"string"==typeof t&&(void 0!==o?e.broadcast(t,JSON.stringify(o)):e.broadcast(t,""))}}(ue.interface),(window.ue4=ue.interface.broadcast);
    window.ue = ue;

    先在你的web页面声明一个ue对象,上述代码就是,然后:

    ue.interface.print = data=>{
        this.$Message.info(data||'123123123')
    };

    2.H5页面触发引擎事件

    在添加上述ue对象声明的前提下

    ue4("setTime",'06:00');

    这样就执行了引擎定义的事件setTimes并且传递参数为'06:00'

    3.UE4引擎事件监听

    之前我们在hud中添加WebUI的时候,加了一个绑定事件的节点,但是自定义事件却一直没有写,但是今天我们用到了!!!

    不难看出,我们自定义了一个事件onJsFunction,由H5触发的ue4事件都会传到这个节点;

    然后蓝图中我们可以看到我们对函数名做了一个switch判断(上图中是SetFloor),并且将数据stringify后打印。

    4.UE4引擎触发H5事件

    前面我们看到我们在H5页面设置了一个事件监听(print事件),下面我们要写一个UE4函数来触发他;

    我们点开这个自定义的函数CallFunction:

    简洁明了,这个函数就是直接call浏览器的函数,并且设置函数名和入参;

    最后我们来调用这个函数:

    这样就实现了调用浏览器实例的print函数

  • 相关阅读:
    常用基础OC 集合
    字典的常用基本用法
    常用基础字符串常用基础实例
    软件测试:测试工程师的素质!
    软件测试:心得简介!
    java 汽车销售收入系统
    收银系统
    流程控制、循环结构
    java 聊天猜拳机器人
    设计模式(六)---建造模式
  • 原文地址:https://www.cnblogs.com/eco-just/p/12890544.html
Copyright © 2011-2022 走看看