ios - 将 Unreal Engine 4 项目嵌入到另一个应用程序中
问题描述
我一直在尝试进行概念验证 (POC),我可以将 UE4 项目嵌入到现有应用程序中(在我的例子中是 NativeScript),但这也可以很容易地应用于 Kotlin 或 ReactNative。
在概念验证中,通过遵循 FPS 的蓝图和 C++ 教程,我能够非常轻松地在从 UE4 启动的 iPhone 上运行项目。然而,我的 POC 的下一阶段要求我将 FPS 嵌入到现有的 NativeScript 应用程序中,该应用程序将在 POC 中管理平台的根菜单、聊天和存储方面。
我遇到的困难是我找不到如何与从蓝图教程生成的 xcode 项目进行交互,而 C++ 教程生成了一个 xcode 项目,我不确定我需要包装的实际根在哪里。
以前有没有人看到过这样做的项目,如果有的话,有什么博客或指导可以指点我吗?我一直在谷歌搜索并四处寻找几个星期,并陷入了死胡同。我在这里找到了2020 年 4 月的反馈帖子,它指的是2020 年 1 月的帖子,其中谈到了 Unity 如何嵌入到其他应用程序中,另外还有一个2014 年的问题。但除此之外,这是一个死胡同。
解决方案
略有不同的方法
免责声明:我不是 UE4 开发人员。因看到未答复的赏金太大而无法忽视而被指控有罪。所以我开始思考和寻找——我发现了一些可以满足你需求的东西。进入像素流。
Pixelstreaming是一项测试版功能,主要用于将游戏嵌入浏览器。这在发生 GPU 大量计算的服务器和播放器可以与内容交互的浏览器之间打开了双向通信 - 鼠标点击和其他事件被发送回服务器。显然它允许一些额外的整洁的东西,但这与手头的问题无关。
由于您想将 Unreal 应用程序嵌入到您的 NativeScript 工具中(如果我理解正确的话,是某种菜单),您可以将您的应用程序从两个单独的部分组成:
- 一部分将运行服务器。
- 第二部分将通过像素流处理覆盖。
这减少了将 UE4 嵌入应用程序的问题(可能更容易)将浏览器嵌入应用程序的问题。(或者,如果您的应用程序是基于浏览器的 - 瞧,问题已解决。)
如果您不想处理远程通信,只需在 localhost 上运行服务器端即可。(具有节省带宽的良好副作用。)或者,如果您喜欢冒险,您可以在应用程序端编写自己的 WebRTC 支持,以完全绕过对浏览器的需求。不过,这可能不值得付出努力。
旁注:您提供的第一个链接是一个功能请求,它暗示了 UE4 不支持嵌入的不幸事实。这进一步强化了一个事实,那里的一个人说了类似“Unity可以做到这一点,如果UE4也能做到这一点,那就太好了”。
然而,另一种方法:
您可以嵌入并使用虚拟显示器将 UE4 部件插入到您的控制器中 - 您基本上会欺骗 UE4 认为所需的显示设备是您应用程序中的画布。
该线程提出了类似的方法:
一般来说,像这样连接两个库的方法是通过平台相关的窗口句柄,例如Windows下的HWND。如果您找到将渲染目标绑定到 HWND 的任何方法,请检查 UE api。然后你可以在 wxWidgets 中创建一个 wxWindow 并告诉 UE 渲染到那个窗口中。那将是第一步。
我不确定我列出的任何内容是否会有很大帮助,但是嘿,至少我尝试过:-)。祝你游戏好运。
同时,作者建议:
反转问题:
使用 UE4 slate框架和在线子系统。您可以使用前者直接在 UE4 中创建您需要的菜单,然后使用后者链接到您希望在 UE4 之外拥有的逻辑。然而,这不是你所要求的,所以我只是为了完整性而列出它。
推荐阅读
- javascript - 光滑的滑块响应断点在 576px 处不起作用
- cypress - 赛普拉斯中的并行请求
- javascript - 触发 Vue 函数更改某些组件字段时出现问题
- java - 如何读取以空格分隔的数字?
- android - 当我更改我的活动时,我的回收站视图不显示
- python - 布尔索引后如何删除列中的某些值?
- python - paho mqtt 客户端何时丢弃缓冲消息?
- typescript - 打字稿:定义类型,如 keyof,但具有特定的值类型
- javascript - 如何选择用户可以使用 JavaScript 切换到的所有 html 元素?
- cpu - 不懂计算程序任务执行时间的公式