借鉴bevy实现适用于Godot-rust的状态管理

bevy是rust开发的ECS结构的游戏引擎,详情可搜索bevy。

godot是近年来除了unreal和unity之外全世界最受欢迎的开源游戏引擎,详情可搜索godot。

godot提供了c接口扩展功能,rust可以编译成c的动态链接库,好心人因此为godot开发了rust绑定:godot-rust,我们便可以用rust开发godot。

godot-rust详情可搜索godot-rust。

godot在2D游戏制作中的表现是无出其右的,它的官方语言gdscript是py缩进式语言,写起来比较麻烦,官方默认支持的c#语言也不在我的技术栈中,因此笔者选择rust来制作godot游戏。

bevy还是初级阶段,没有可视化编辑器,撸UI比较麻烦;但是它是一个非常优秀的rust项目,里面有惊艳的rust代码案例。笔者很喜欢bevy中的一些概念,比如状态管理,因此借鉴其使用方法,在godot-rust中实现了一个简易版本。

成品使用起来如下:

实现得比较简易,不能一次注册多个方法,没有方法元组的概念,没有before、after等排序功能,也没有run_if条件功能。

但至少避免了状态的进入、存续、退出等一系列样板代码。

未完待续......

相关推荐
古城小栈1 小时前
Rust 网络请求库:reqwest
开发语言·网络·rust
WaterRun2 小时前
一个由Rust实现的, 好得多的Windows tree命令: tree++项目简介
rust·github
大厂技术总监下海3 小时前
Rust的“一发逆转弹”:Dioxus 如何用一套代码横扫 Web、桌面、移动与后端?
前端·rust·开源
superman超哥6 小时前
Rust 异步时间管理核心:Tokio 定时器实现机制深度剖析
开发语言·rust·编程语言·rust异步时间管理核心·tokio定时器实现机制·tokio定时器
_风华ts6 小时前
虚幻引擎RPC
rpc·游戏引擎·虚幻
古城小栈6 小时前
Rust 的 validator 库
开发语言·后端·rust
古城小栈6 小时前
Rust 的 redis-rs 库
开发语言·redis·rust
superman超哥7 小时前
Rust 异步递归的解决方案
开发语言·后端·rust·编程语言·rust异步递归
Mr -老鬼7 小时前
Rust 的优雅和其他语言的不同之处
java·开发语言·rust
weixin_531651817 小时前
Rust 的所有权机制
java·开发语言·rust