1个稳定版本
1.0.0 | 2024年7月21日 |
---|
#1330 在 游戏开发
每月145次下载
用于 2 工具箱
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