日志
场景的加载和保存 @宏楼 Koiro
这周我更新了一下 Tilemap 系统,以及完成了简单的场景的加载和保存。现在所有场景中的实体都是 Scene 实体的子实体,卸载场景就是删除掉 Scene 实体和其所有子实体。我们将场景序列化成 toml 文件存储。
一些小坑:
- Bevy 中 world.despawn 的默认行为不会删除子实体,因此同时删除子实体需要用 bevy::prelude::despawn_with_children_recursive(world, id)
- 使用 world.despawn 一个实体后,其父实体的 Children 组件会仍然包含这个已销毁的子实体,使用 bevy::prelude::despawn_with_children_recursive(world, id)
- 当子实体有 Visibility 组件时,需要给父实体也安上 InheritedVisibility 组件(Bevy 会警告)
其它:实现了一个小的 “推迟几帧执行某个系统” 的工具包,为了满足自己推迟几帧执行系统的需求
编辑器尝试 @宏楼 Koiro
这周进行了编辑器相关的尝试。编辑器基于 egui, egui dock, bevy egui, bevy inspector egui,现在有一些简单的放置 & 删除及调试功能。现在可以左键放置方块和右键删除方块,更改进入编辑模式等等。
参考资料:
- Egui demos: https://www.egui.rs/#Demo
- Getting started with egui in Rust: https://whoisryosuke.com/blog/2023/getting-started-with-egui-in-rust
- Bevy egui_dock example: https://github.com/jakobhellermann/bevy-inspector-egui/blob/main/crates/bevy-inspector-egui/examples/integrations/egui_dock.rs
- Egui Dock: https://github.com/Adanos020/egui_dock
- Bevy Inspector Egui: https://github.com/jakobhellermann/bevy-inspector-egui/tree/main