ios - 将虚幻引擎 4 项目嵌入到另一个应用程序中

标签 ios nativescript unreal-engine4

我一直在尝试进行概念验证 (POC),我可以将 UE4 项目嵌入到现有应用程序中(在我的例子中为 NativeScript),但这也可以轻松应用于 Kotlin 或 ReactNative。

在概念验证中,通过遵循 FPS 的蓝图和 C++ 教程,我已经能够在从 UE4 启动的 iPhone 上轻松运行项目。然而,我的 POC 的下一阶段要求我将 FPS 嵌入到现有的 NativeScript 应用程序中,该应用程序将管理 POC 中平台的根菜单、聊天和存储方面。

我遇到的困难是我找不到如何与蓝图教程生成的 xcode 项目交互,而 C++ 教程生成一个 xcode 项目,我不确定我需要包装的实际根在哪里.

以前有人见过这样做的项目吗?如果是的话,您可以向我指出任何博客或指南吗?我已经在谷歌上搜索并环顾四周了几个星期,但陷入了死胡同。我找到了feedback post从 2020 年 4 月开始,指的是 a post 2020 年 1 月,讨论了 Unity 如何嵌入其他应用程序以及来自 2014 here 的问题。但除此之外,这是一条死胡同。

File tree as requested

最佳答案

稍微不同的方法

免责声明:我不是 UE4 开发人员。因看到悬而未决的赏金而被指控有罪,赏金数额太大,不容忽视。所以我开始思考和寻找 - 我发现了一些可以满足您需求的东西。输入pixelstreaming .

像素流是一项测试版功能,主要用于将游戏嵌入到浏览器中。这在进行 GPU 大量计算的服务器和玩家可以与内容交互的浏览器之间打开了双向通信 - 鼠标单击和其他事件被发送回服务器。显然它允许一些额外的简洁的东西,但这与手头的问题无关。

由于您想将 Unreal 应用程序嵌入到您的 NativeScript 工具中(如果我理解正确的话,是某种菜单),您可以使您的应用程序由两个单独的部分组成:

  • 其中一个部分将运行服务器
  • 第二部分将通过像素流处理叠加

这减少了将 UE4 嵌入应用程序的问题到将浏览器嵌入应用程序的问题(可能更容易)。 (或者,如果您的应用程序是基于浏览器的 - 瞧,问题已解决。)
如果您不想处理远程通信,只需在本地主机上运行服务器端即可。(具有节省带宽的良好副作用。) 或者,如果您喜欢冒险,您可以在应用程序端编写自己的 WebRTC 支持,以完全绕过对浏览器的需求。但这可能不值得付出努力。

旁注:您提供的第一个链接是功能请求,它暗示了 UE4 不支持嵌入的不幸事实。事实进一步强化了这一点,那里的一个人说了这样一句话:“Unity 可以做到这一点,如果 UE4 也可以的话那就太好了。”

另一种方法:

您可以嵌入并使用虚拟显示器将 UE4 部件插入到 Controller 中 - 您基本上会欺骗 UE4 认为所需的显示设备是应用程序内的 Canvas 。

This线程建议了类似的方法:

In general, the way to connect two libraries like this would be through a platform dependent window handle, e.g. a HWND under Windows. Check the UE api if you find any way to bind the render target to a HWND. Then you could create a wxWindow in wxWidgets and tell UE to render into that window. That would be a first step.

我不确定我列出的任何内容是否会有很大帮助,但是嘿,至少我尝试过:-)。祝您游戏顺利。

同时,作者建议:

扭转问题:

使用UE4 slate框架和online子系统。您可以使用前者直接在 UE4 中创建所需的菜单,然后使用后者链接到您想要在 UE4 之外拥有的逻辑。然而,这不是您所要求的,所以我列出它只是为了完整性。

关于ios - 将虚幻引擎 4 项目嵌入到另一个应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66178438/

相关文章:

iphone - plist 不会以编程方式删除

ios - Xcode 未将所有启动图像捆绑在 iPA 中

angular - 使用 Apache thrift 在 Nativescript + Angular 中“无法读取未定义的属性 'browser'”

angular - 如何在 nativescript-angular html 文件中添加水平线

typescript - Nativescript:如何以管理员身份登录并管理 Firebase 中的用户帐户

c++ - USphereComponent 和 Overlap 事件

c++ - 如何从另一个类启动角色

android - UE4 NDK android-19 找不到 'log2'

ios - 是否需要请求 Siri 授权?

objective-c - 为什么自定义并发队列上的 dispatch_sync 会死锁