借鉴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条件功能。

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

未完待续......

相关推荐
蔡少将6 小时前
用 Tauri 2 给 Mac 应用接 Touch ID,签名公证都做了,还是 -34018
rust
木子欢儿13 小时前
国内 macOS/Linux 安装 rust
linux·运维·服务器·macos·rust
Kapaseker14 小时前
Rust 一行 entry() 干掉五行 if/else
rust
红尘散仙1 天前
谁说终端只能敲键盘?我用 Rust 给小说阅读器加上了鼠标
前端·后端·rust
又过二十1 天前
结合Godot八向图实现网页角色设计器测试
ai·aigc·godot·game·qwen-image·游戏素材
寂寞的船2 天前
【Unity知识速递】第8期 IL2CPP 托管堆内存碎片与原生堆交互机制深度解析
unity·游戏引擎·交互
淡海水2 天前
09-04-内存-Unity原生对象生命周期
unity·c#·游戏引擎·gc
unconditional2 天前
我拆了 sdkm 的回滚设计:每个写操作,都提前写好了翻车预案
rust·开源
数字幽灵2 天前
开源!我用 Rust 手搓了一个 Agent 原生的鸿蒙逆向分析平台
rust
寂寞的船3 天前
【Unity Bug挑战】第10期 SerializeReference 内存泄漏之谜
unity·c#·游戏引擎·bug