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