10次重大发布
0.11.0 | 2023年7月29日 |
---|---|
0.9.0 | 2023年4月30日 |
0.7.0 | 2023年3月6日 |
0.6.0 | 2022年11月13日 |
0.1.0 | 2021年11月7日 |
#740 in 游戏开发
每月64次下载
290KB
6K SLoC
bevy_proto
使用简单的配置文件在Bevy中生成实体,类似于Unity的预制体。
此crate可用于
- 快速原型设计
- 模组支持
- 数据定义的行为
📋 功能
-
使用配置文件轻松定义实体
( name: "player", schematics: { "game::creature::Health": ( value: 100, ), }, )
-
从其他原型继承功能
( name: "Skeleton", templates: ["Enemy", "Creature"], // ... )
-
设置整个实体层次结构
( name: "Blaster", schematics: { "game::weapon::AmmoEntity": ( // Even reference other entities in the tree: entity: EntityPath("./@1"), ), }, children: ["Scope", "AmmoPack"] )
-
自动加载资源
( name: "Puppy", schematics: { "game::image::GameImage": ( handle: AssetPath("textures/puppy.png"), ), }, )
-
生成!
fn spawn_player(mut commands: ProtoCommands) { commands.spawn("player"); }
📲 安装
将以下内容添加到你的 [dependencies]
部分中 Cargo.toml
bevy_proto = "0.11"
或者使用 cargo add
cargo add bevy_proto
📓 示例
查看 示例 文件夹以获取crate的使用示例和教程。
🕊 Bevy兼容性
bevy | bevy_proto |
---|---|
0.11.0 | 0.11.0 |
0.10.1 | 0.10.0 |
有关此crate的旧版本,请参阅下面的 旧版本 部分。
🥅 目标
此crate功能基本完善。
还有一些我认为很有必要添加的功能。以下是当前目标和已完成的任务列表
目标 | 状态 |
---|---|
反射支持 | ✅ |
嵌套原型 | ✅ |
包指定器 | 🚧 |
可配置的图示过滤和处理 | ✅ |
原型参数 | 🚧 |
无实体的原型 | ✅ |
值访问 | 🚧 |
自定义文件格式支持 | ✅ |
改进文档 | 🚧 |
基准测试 | 🚧 |
🕰 旧版本
在 bevy_proto
的 0.8 版本之前,这个包依赖于 typetag
包。这使得我们能够通过使用 serde
的 Deserialize
来实现类似的目标,而不是使用 bevy
的 FromReflect
。这样做的好处是我们无需注册每个类型,但也有一些缺点。
首先,它在 WASM 上的表现有问题,这使得它的使用具有平台相关性。此外,它在 main 之前的生命周期行为并不保证由 Rust 编译器存在或按预期工作,这意味着它可能在未来的某个时刻突然停止工作。
最后,也是最重要的一点,这是 Bevy 本身目前不采取的方向。Bevy 正在构建其反射库,而社区中的许多人也正在跟随这一方向。随着这变得越来越标准化(尤其是随着编辑器的出现),更好地利用反射将是一个更好的选择。
然而,为了允许用户决定他们是否也想要切换,我已经在一个新的包下保留了基于原始 typetag
的代码
我想这个包不会看到很多更新,除了提升 Bevy 版本之外。我可能会回来创建一个与这个包类似的流程,但我不对此作出任何承诺,因为我希望这个包是主要焦点。
依赖项
~20–59MB
~1M SLoC