用 Unity 反应原生

Posted

技术标签:

【中文标题】用 Unity 反应原生【英文标题】:React Native with Unity 【发布时间】:2015-10-16 16:28:35 【问题描述】:

有没有人有任何结合 React Native 和 Unity 的经验?我正在寻找一个 UI 非常重的 Unity 项目,我正在考虑使用 React Native 来利用其在移动和 Web 上的 UI 功能。

我很好奇这种方法的工作流程是什么。

【问题讨论】:

您是否尝试过(成功)? 这个我也很好奇! 好问题!你(或其他人)有没有试过npmjs.com/package/react-native-unity-view? 【参考方案1】:

经过多次试验,终于做到了这一点。这些是步骤。

1) 使用这个link,为Gradle 导出android 项目。 在 Build Settings 窗口中选择 Gradle 并选中 Export Project 复选框。 点击导出并选择目标文件夹。 2) 将生成的文件夹导入Android studio。出现提示时选择确定。在此过程中,您会遇到以下问题 2a) 由于 org.gradle.api.internal.tasks 问题,Gradle 同步失败。使用此link 解决 3) 使用 link 创建 React Native App 4) 使用 link 开始在创建的 react native 应用程序中集成 Android 导出的文件夹。不要升级 Gradle,因为 Android Studio 会一次又一次地询问您。您将遇到以下问题。在您完成此处的 #5 之前,不要进行“测试集成”。 4a) 配置 maven 时,将此 url 用于 maven url "$rootDir/../node_modules/react-native/android" 。 4b) 在配置 maven 时,如果遇到与 javax.inject:javax.inject 相关的问题。请使用此link。 4c) 您可能还会遇到此错误“与依赖项 'com.google.code.findbugs:jsr305' 冲突”。你可以解决这个link。 4d) 在此链接的代码集成部分,请关注以下部分:如果您正在使用 React Native 的入门工具包,请将“HelloWorld”字符串替换为 index.android.js 文件中的字符串(它是AppRegistry.registerComponent() 方法的第一个参数)。这里你必须用项目名称替换。 5) 在完成“测试您的集成”部分之前,您必须添加代码以从 UnityActivity 调用 MyReactActivity。这个link 会有所帮助。 6) 浏览#4 中提供的链接的“测试您的集成”部分。您可能会遇到以下问题。 6a) 无法从资产 index.android.bundle 加载脚本。使用这个link。 6b) 无法连接到 android 上的开发服务器。使用这个link。

【讨论】:

你好,我正在处理它,你知道如何添加两个游戏【参考方案2】:

查看我在Medium上的文章

我已经展示了如何逐步将 react native 与 Unity 3D 集成的示例。我的目标是在 Unity3D 中使用 react native,就像一个模块一样,如果你要在 Unity 3D 上大量工作,这将非常方便。希望这对以后来这里的人有所帮助。

【讨论】:

你知道我们如何在 React Native 应用中添加两个或多个游戏 理想情况下,Unity 在其容器中运行一个游戏。在这种情况下,我建议您尝试在 Android 片段中添加 Unity 游戏,如果它支持渲染片段,则将其用于本机反应。否则依赖 Android Activity 和 Unity 游戏片段 @AnujSharma【参考方案3】:

如果 Unity 游戏使用 Cocoa Touch 渲染其核心类,我不确定它是如何为 ios 构建的。

如果是这样,并且您可以访问或能够渲染 UIViewController,那么您可以渲染您的 React Native 应用程序。您唯一需要做的就是在两个应用程序之间建立通信。

这是一个在 React Native 应用程序中渲染原生 UI 组件的示例,可能会有所帮助。 http://moduscreate.com/leverage-existing-ios-views-react-native-app/

【讨论】:

你好 Stan,你知道我们如何在 React Native 应用程序中添加两个或更多游戏。 @Anuj 如果你可以添加一个它应该不是问题,在一个游戏中添加所有内容并有条件地从反应原生端通信中更改场景 顺便说一句,您的链接现在是 404...【参考方案4】:

我也很好奇,并创建了一个如何为 Android 执行此操作的示例项目:https://github.com/marijnz/unity-react。

如果这是一个可行的选择,至少取决于:

项目将运行多长时间,React 和 Unity 都必须更新,随着时间的推移,这可能会变得更加困难。 项目拥有的 sdk/依赖项的数量。 如果你也想做 iOS。

一般来说,我可能会避免走这条路。 尽管这个例子现在看起来很简单,但要做到这一点很痛苦(正如 Shaunak 的回答已经暗示的那样;))

【讨论】:

以上是关于用 Unity 反应原生的主要内容,如果未能解决你的问题,请参考以下文章

快速上手Unity原生Json库

用字符串反应原生创建元素

用图像反应原生 iOS 推送通知

unity原生的SpritePacker打包的纹理用代码怎么引用

用引号和大括号反应原生属性值

怎么给Unity写一个原生的插件