这个项目能做什么
# Born React Native Godot
React Native Godot 允许你在 React Native 应用中嵌入 Godot 引擎。它由 [Born](https://born.com) 创建,并与 [Migeran](https://migeran.com) 合作开发。
## 主要特性
* 支持 Android 和 iOS,基于 [LibGodot](https://github.com/migeran/libgodot) 构建。
* 已由 Born 在生产环境中使用,服务数百万用户。
* 启动、停止和重启 Godot 引擎;每次重启可加载不同的 Godot 项目。
* 暂停和恢复正在运行的 Godot 实例。
* Godot 在独立线程上运行,保持 UI 和 React Native JavaScript 线程响应流畅。
* 在同一或不同屏幕上嵌入 Godot 主窗口及其子窗口。
* 从 TypeScript/JavaScript 访问完整 Godot API:实例化对象、调用方法、获取/设置属性、连接信号,并将 JS 可调用对象传递给 Godot。
## 示例应用入门
[示例应用](example/) 演示了主要功能。安装先决条件(例如通过 ASDF 安装 Node、Java、Gradle、Ruby)并导出 Godot 示例(`./export_godot_GodotTest.sh android|ios` 等)后,下载预构建库并像往常一样使用 `yarn ios` / `yarn android` 在 iOS 或 Android 上运行。便捷脚本 `update_deps.sh` 负责处理设置。
## 你的第一个 React Native Godot 应用
1. 从 npm 安装:`yarn add @borndotcom/react-native-godot`
2. 下载预构建的 LibGodot 包:`yarn download-prebuilt`(不通过 npm 分发;这允许自定义构建)。
3. 导入并使用视图:`import { RTNGodot, RTNGodotView, runOnGodotThread } from "@borndotcom/react-native-godot"`。
4. 添加 `<RTNGodotView style={...}/>`(默认为 Godot 的主窗口)。
5. 通过调用 `RTNGodot.createInstance([...])` 并传入命令行参数,在 Godot 线程上初始化 Godot。关键点:
- 使用 `--display-driver embedded` 嵌入到 React Native 中。
- 在 Android 上,传递文件夹路径(例如 `--path /main`)或 PCK;在 iOS 上,使用 `--main-pack` 并指定包文件。建议运行时下载 Godot 应用,以减小体积并便于更新。
6. 在 Godot 线程上通过 `RTNGodot.destroyInstance()` 停止;从 JS 主线程通过 `RTNGodot.pause()` / `RTNGodot.resume()` 暂停/恢复。
将你的 Godot 项目导出为 PCK 或 ZIP;示例中包含辅助脚本。
## Godot API 使用
通过 `RTNGodot.API()` 访问 API:
```typescript
let Godot = RTNGodot.API();
var engine = Godot.Engine;
var vector = Godot.Vector2();
vector.x = 1.0; vector.y = 2.0;
var sceneTree = engine.get_main_loop();
var root = sceneTree.get_root();
```
使用 `.connect(function() { ... })` 连接信号,并将 JS 函数作为 Callable 传递给 Godot 方法(例如,从自定义节点的 GDScript 中)。
## 线程与 JavaScript
Godot 在独立线程上运行。为了从 JavaScript 交互,该库使用 [react-native-worklets-core](https://github.com/margelo/react-native-worklets-core) 通过 `runOnGodotThread()` 在 Godot 线程上运行 worklet 化的 JS。这是推荐的方法;从 RN 主线程直接调用是可能的但有限制(例如,Scene Tree 访问不是线程安全的),并且对象引用在不同上下文之间不可互换。
## 高级主题
* **自定义 LibGodot 构建**:克隆 LibGodot(分支 `libgodot_migeran_45`),使用提供的脚本构建,并通过环境变量(例如 `LIBGODOT_XCFRAMEWORK_PATH`)覆盖下载路径。
* **调试原生代码**:对于 iOS,构建开发版 LibGodot 并在 Xcode 中设置断点;对于 Android,添加符号目录并可选择符号链接 Godot 源码树。
* **在 Godot 编辑器中远程调试**:传递 `--remote-debug tcp://<host>:6007` 并在 Android 上使用 `adb reverse`;在 iOS 上设置编辑器的 Remote Host。
## 许可证
根据 MIT 许可证发布。
## 支持
[Migeran](https://migeran.com) 提供商业支持与开发服务。Born 正在招聘 React Native 工程师(参见 [born.com](https://born.com))。
评论
0 评分人数达到10人后显示
登录后参与讨论。