这个项目能做什么

# 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))。