日誌
場景的加載和保存 @宏樓 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