#bevy #gamedev #assets #manifest #entities #transforming #prototypes

reactor_proto

一个用于将磁盘上的资源转换为Bevy中的实体的Rust库,具有明确的观点。

1个稳定版本

1.0.0 2024年7月21日

#1330游戏开发

Download history 133/week @ 2024-07-20 12/week @ 2024-07-27

每月145次下载
用于 2 工具箱

MIT/Apache

36KB
743

rantz_proto

一个用于将磁盘上的资源转换为Bevy中的实体的Rust库,具有明确的观点。

清单

清单存储在磁盘上的不同格式之一(见'Cargo.toml')。它们被加载并转换为一个实现Manifest特质的结构。然后,这些结构被进一步转换成原型并存储在PrototypeLibrary中。

原型

原型是实现Prototype特质的结构。它们存储在PrototypeLibrary资源中。该特质有两个主要功能,name()build()name()用于生成唯一的名称,该名称用于从库中检索原型。build()负责将原型转换为实体。该特质还有一个可选的第三个功能,rebuild(),提供了一个默认实现,不执行任何操作。

注意 一个结构可以实现Manifest和Prototype,并在Manifest特质中仅返回Self。

热重载

注意:需要 'hot_reloading'(默认开启)

如果底层资源发生更改,则重新加载并重新处理清单为原型,然后每个使用给定原型构建的实体都传递给rebuild(),以便允许“即时”更改。

基本上,如果您使用原型,rebuild()将允许您更改任何活动实体以匹配更改。

注册

为了加载和处理清单,它必须被注册。这通过在构建应用程序时调用'app.add_prototype()'来完成。

加载进度

注意:需要 'progress_tracking'(默认开启)

本软件包为跟踪加载进度提供了对 iyes_progress 的支持。如果您想控制何时加载,可以使用 configure_set 与 'ProtoSchedule::Loading' 来控制加载发生的时间。

原型生成

提供了对 'Commands'、'World' 和 'CommandQueue' 的扩展,引入了 'spawn_prototype' 和 'spawn_prototype_async',使得原型生成变得简单。

在位置生成

我不想具体说明如何处理位置,因此这由您决定。我的建议是在您的原型中添加一个位置,并在调用 spawn_prototype 之前编辑该位置。

实体构建器

为了方便,还包含了一个 EntityBuilder。这是一个用于从 Module 创建和更新实体的结构体,非常适合在原型中使用。调用 build 将在每个模块上调用 install。调用 rebuild 将在每个模块上调用 update

用法

ProtoPlugin 添加到您的应用中。使用 app.add_manifest() 注册您的清单,然后使用 commands.spawn_prototype() 生成实体。

如果您想控制加载发生的时间,请在 ProtoSchedule::Loading 调度上使用 app.configure_sets()

依赖

~23–58MB
~1M SLoC