Vue3与UE5的交互

1. Vue3向UE5传信 —— 三步

步骤归纳如下:

  1. Vue3项目index.html的script中定义UE5函数
//定义UE5()函数
    "object" != typeof ue && (ue = {}),
        (uuidv4 = function() {
            return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, function(t) {
                return (t ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (t / 4)))).toString(16);
            });
        }),
        (ue5 = (function(r) 
        {
            return "object" != typeof ue.interface || "function" != typeof ue.interface.broadcast ?
                ((ue.interface = {}),
                    function(t, e, n, o) {
                        var u, i;
                        "string" == typeof t &&
                            ("function" == typeof e && ((o = n), (n = e), (e = null)),
                                (u = [t, "", r(n, o)]),
                                void 0 !== e && (u[1] = e),
                                (i = encodeURIComponent(JSON.stringify(u))),
                                "object" == typeof history && "function" == typeof history.pushState ?
                                (history.pushState({}, "", "#" + i), history.pushState({}, "", "#" + encodeURIComponent("[]"))) :
                                ((document.location.hash = i), (document.location.hash = encodeURIComponent("[]"))));
                    }) :
                ((i = ue.interface),
                    (ue.interface = {}),
                    function(t, e, n, o) {
                        var u;
                        "string" == typeof t &&
                            ("function" == typeof e && ((o = n), (n = e), (e = null)),
                                (u = r(n, o)),
                                void 0 !== e ? i.broadcast(t, JSON.stringify(e), u) : i.broadcast(t, "", u));
                    });
            var i;
        })(function(t, e) {
            if ("function" != typeof t) return "";
            var n = uuidv4();
            return (
                (ue.interface[n] = t),
                setTimeout(function() {
                    delete ue.interface[n];
                }, 1e3 * Math.max(1, parseInt(e) || 0)),
                n
            );
        }));
  1. UE5函数在整个Vue项目中都能使用,在index.html中加
window.ue5 = ue5
  1. 在需要通信的vue页面中
//pageFunctionName是页面定义的函数名称,function_name是与UE5中商议好的函数名称,function_params是Vue3传递到UE5中的函数
const pageFunctionName= () => ue5("function_name", function_params);

2. UE5向Vue3传递事件 —— 两步

  1. UE5中定义好回调函数在这里插入图片描述
  2. 在vue页面中
//注意用的是ue,不是自定义的ue5,showSidebar是回调函数中写的函数名称,注意区分大小写
ue.interface.showSidebar = () => {
//函数内部执行操作
  console.log('~~~~')
};
GitHub 加速计划 / vu / vue
207.55 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:3 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 5 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐