7个稳定版本
| 1.2.4 | 2024年7月20日 |
|---|---|
| 1.2.2 | 2024年7月17日 |
| 1.2.0 | 2024年7月12日 |
| 1.1.0 | 2024年7月10日 |
| 1.0.0 | 2024年7月8日 |
#376 in 游戏开发
819每月下载量
在 2 crates 中使用
36KB
743 行
rantz_proto
一个有偏见的Rust库,用于将磁盘上的资源转换为Bevy中的实体。
清单
清单存储在磁盘上的多种不同格式之一(参见'Cargo.toml')。它们被加载并转换为实现了Manifest trait的结构体。然后,这些结构体被进一步转换为原型并存储在PrototypeLibrary中。
原型
原型是实现了Prototype trait的结构体。它们存储在PrototypeLibrary资源中。该trait有两个主要功能,name()和build()。 name()用于生成用于从库中检索原型的唯一名称。build()负责将原型转换为实体。该trait还有一个可选的第三个函数,rebuild(),默认实现不执行任何操作。
注意 一个结构体可以同时实现Manifest和Prototype,并在Manifest trait中仅返回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()。
依赖项
~21–56MB
~1M SLoC