1

假设我想构建一个类似于 2D 横向卷轴游戏的东西。React Native 在性能方面是否合适?例如,我可以使用 OpenGL 加速吗?或者它可能会比只使用 WebGL 和 HTML5 慢吗?

进行了更多研究并得出了以下信息:

显然有一个 GLView 包含一个 WebGL 上下文: https ://docs.expo.io/versions/latest/sdk/gl-view.html

在那个页面上它说:

可以使用任何需要 WebGLRenderingContext 的支持 WebGL 的库。有时,此类库假定 Web JavaScript 上下文(例如假定文档)。通常这是用于资源加载或事件处理,主要渲染逻辑仍然只使用纯 WebGL。因此,这些库通常仍然可以与几个解决方法一起使用。上面特定于 Expo 的集成包括一些流行库的解决方法。

还有来自 Expo 的 Twitter 评论,其中特别提到了“游戏”:

Expo Graphics gives you the power of GL combined with Expo+React Native. It 
is the foundation for image filters, games, and special effects.

这里应该有一个演示: https ://github.com/gre/gl-react

那里没有列出多少使用 React Native 构建游戏的项目。尽管如此,原生 OpenGL 加速的 WebGL 上下文接口还是带来了希望。

4

1 回答 1

2

我使用react-native-webgl构建了一个扫雷游戏。该库提供了渲染 16x30 单元格网格所需的性能提升,并从一种状态快速转换到另一种状态。在某些情况下,游戏需要一次重新渲染数十甚至数百个单元格。默认的 React Native 渲染器速度不够快,无法在用户注意到延迟的情况下做到这一点。

请注意,虽然 react-native-webgl 解决了性能问题,但它需要您编写低级代码,例如创建着色器、管理顶点等。而且我还没有找到基于 react-native-webgl 构建的库可以工作我的任务。

因此,如果您真的需要或想要在游戏中使用 React Native,请使用 react-native-webgl 或 GLView for Expo。否则使用不同的技术,如 Unity。

你可以在这里找到我的游戏的源代码。

于 2019-01-07T18:12:49.570 回答