使用第三方插件

社区制作 Bevy 插件的生态系统正在不断增长,它提供了许多没有正式包含在引擎中的功能。在你的项目中使用其中的一些插件,你会大大受益。

要找到这些插件,你可以在 Bevy 官方网站上的 Bevy Assets 页面搜索。这是 Bevy 社区插件的公示表。如果你自己已经开发并发布了 Bevy 插件,你应该把你的插件链接加入到该页面

请注意,一些第三方插件可能使用不常用的许可证。在你的项目中使用某个插件之前,请务必检查其许可证。


本书中的其他页面也会包含一些在使用第三方插件时的宝贵信息。

插件推荐

这是我个人的、精心筛选的、主观的推荐列表,介绍了 Bevy 生态系统中最重要的插件(在我看来)。

我的目标是帮助指导新的 Bevy 用户找到一些已知的好资源,这样你就可以开始做你想做的游戏了。:)

这里列出的都是与最新 Bevy 版本兼容的插件,并且使用了宽容性的许可证(像 Bevy 一样)。

这个页面内容非常有限,我只能推荐我所了解的插件。也请查看 Bevy Assets 页面,以找到更多的插件。:)

开发工具和编辑器 Development Tools and Editors

这些插件在另一个单独页面列出

编码辅助工具 Code Helpers

bevy_loading 是一个 state 转换的辅助工具。它可以让你注册系统、报告他们的进度、跟踪进度,并在它们都准备好时过渡到下一个状态。最有用处的是 加载屏幕 ,但也可以更普遍地使用,比如跟踪 assets 的加载。

bevy_asset_loader 是一个更灵活和有主见的、用于管理和加载游戏资源的辅助工具。使用自定义注解,可以让你更方便地声明你的资源。

输入映射 Input Mappings

为了帮助解决你的游戏的 [输入处理][chapter::input] 需求,可以试试 Leafwing Studios 的输入管理器插件。它以一种非常灵活的方式来处理你游戏的输入绑定和映射。

音频 Audio

使用 bevy_kira_audio 代替内置的 bevy_audio

内置的音频功能非常有限,你用这个插件可以满足音频游戏的几乎所有功能需求。

关于如何设置它的帮助,请看这个页面

摄像机 Camera

bevy_config_cam 是一个帮忙你很容易地在 Bevy 3D 项目中添加摄像机控制的好插件。它可以让你选择各种常见的摄像机行为(如跟随、俯视、FPS式、自由漫游)。

摄像机是一种与游戏本身特定相关的东西。随着你项目的进展,你可能想为你的游戏实现自定义的摄像机控制逻辑。然而,当你开始做一个新项目时,这个插件是非常棒的。

瓦片地图 Tilemap

如果你正在制作一个基于瓦片地图的 2D 游戏,有一些插件可以帮助你高效地完成它。最好是使用这些类的插件,而不是为每块瓦片生成大量单独的 Bevy 精灵。

  • bevy_ecs_tilemap
    • 每个瓦片使用一个 ECS 实体,并进行有效的自定义渲染。
    • 让你以 ECS 的方式来处理瓦片图。
    • 设置、配置、生成瓦片图可能有点复杂。
    • 功能丰富:方形、六角形、等高线网格,动画、层、块,可选的 ldtk/tiled 支持,...
  • bevy_tilemap
    • 另一个功能丰富的插件,但这个插件不是 ECS 方式的(整个地图是一个实体)。
    • 旨在为无限的、无尽的或动态生成的地图提供良好的支持。
    • API 相当完善和稳定,有很好的文档。
  • bevy_simple_tilemap
    • 功能有限,如果你只需要快速地渲染一个正方形瓦片网格,则很容易使用。

形状图、矢量图、画布 Shapes / Vector Graphics / Canvas

如果你想绘制2D图形,请使用 bevy_prototype_lyon 插件。

游戏 AI Game AI

big-brain 是一个有助于开发游戏 AI 行为(AI 工具)的插件。

用户图形界面 GUI

如果你想要替换 Bevy 的 内置 UI,请看 bevy_egui。它将 egui 工具包 集成到了 Bevy 中。

它是一个即时模式的 GUI 库(就像 Rust 生态中的 Dear Imgui)。

它的功能非常丰富,包含很多小工具。

它并不是为制作华丽的游戏性 UI 而设计的(尽管如此它仍很可能对你的游戏非常有帮忙)。它非常适用于类似编辑器的 UI、调试 UI 或者非游戏应用。

物理 Physics

Bevy 可以与 Rapier 物理引擎 集成。

有两个插件可供你选择:

  • bevy_rapier
    • 由 Rapier 项目的开发者官方维护。
    • 这是一个"原生"的插件,让你直接访问 Rapier。
    • 给你最多的控制权,但也增加了使用的难度,而且不是 Bevy 惯用式。
    • 你可能需要阅读大量的文档,学习难度大。
  • heron
    • 试图做一个对 Bevy 更惯用的插件。更有主见。
    • 可能会比 bevy_rapier 更容易使用,更直观。
    • 可能在功能方面也更有限。

动画 Animation

对于简单的"平滑运动"(缓和/调整/插值),可以试试 [bevy_easings][project::bevy_easings]。这对于移动 2D 物体、移动摄像机或其他类似的过渡效果来说可能已经足够好了。

对于 2D 精灵的动画,可以试试 [benimator][project::benimator]。

对于 3D 骨骼动画,不幸的是,似乎还没有插件。

另外,很久以前,有一个 [PR][bevy::1429] 试图为 Bevy 贡献一个全功能的动画系统。据我所知,它还没有被作为一个独立的插件来使用。