当前位置: 首页 > news >正文

godot-rust入门案例

godot-rust 第一个程序







第一章 项目结构图







第二章 准备 rust

第01节 新建 rust

进入到project-dir文件夹中,打开终端,使用下面的命令,构建 rust 工程

cargo new myrust --lib

说明:

其中的myrust可以替换为其他 符合命名规范的名称,表示的是 rust 所在的文件夹名称



第02节 修改 cargo 文件

进入到 下面的目录中project-dir\\myrust的文件夹当中,找到Cargo.toml文件,修改其内容

[package] name = "myrust" # rust 所在的文件夹名称, 因为我的名称是 myrust 所以写的是 myrust version = "0.1.0" # 当前编辑的版本 edition = "2021" [lib] crate-type = ["cdylib"] # 这里是必须添加的一句话, 创建一个动态库,并在其中公开一个 C 语言接口 [dependencies] godot = "0.4.5"



第03节 添加godot到项目中

在终端中,使用下面的命令,将 godot 关联到 rust 当中

cargo add godot







第三章 编译迭代(非必须)

第01节 编译

在编写代码时,您可以cargo像处理任何其他 Rust 项目一样,编译扩展程序的每次迭代

cargo build



第02节 迭代

可以直接在[dependencies]Cargo.toml 文件的相应部分链接到 GitHub 代码库。为此,请替换以下内容

原始的写法是

godot = "0.x.y"

替换的写法是

godot = { git = "https://github.com/godot-rust/gdext", branch = "master" }







第四章 准备 godot

第01节 gdextension 文件

在 godot 的根目录下面定义 gdextension 文件,例如 文件名称是HelloWorld.gdextension

需要注意的是 文件的后缀是gdextension

下面是 文件的内容

[configuration] entry_symbol = "gdext_rust_init" compatibility_minimum = 4.1 reloadable = true [libraries] linux.debug.x86_64 = "res://../myrust/target/debug/libmyrust.so" linux.release.x86_64 = "res://../myrust/target/release/libmyrust.so" windows.debug.x86_64 = "res://../myrust/target/debug/myrust.dll" windows.release.x86_64 = "res://../myrust/target/release/myrust.dll" macos.debug = "res://../myrust/target/debug/libmyrust.dylib" macos.release = "res://../myrust/target/release/libmyrust.dylib" macos.debug.arm64 = "res://../myrust/target/debug/libmyrust.dylib" macos.release.arm64 = "res://../myrust/target/release/libmyrust.dylib"

说明:

在 libraries 当中的参数值,其实是 rust 构建生成的资源的路径。

例如res://../myrust/target/debug/myrust.dll

1、前面的第一个 myrust 是 rust 所在的根文件夹名称

2、后面的 myrust.dll 是由于我们定义了 rust 的根文件夹名称,生成出来的 myrust.dll



第02节 检查映射文件

如果前面的操作正确的情况下,这是一个非必须的操作。

我们可以查看 godot 当中,下面路径文件夹里面的内容:

路径:project_dir\\godot\\.godot\\extension_list.cfg当中的文件extendsion_list.cfg的内容

正确的内容,应该是指向了 外面的HelloWorld.gdextension

例如:

res://HelloWorld.gdextension







第五章 编写第一个程序

前面的内容都是为了准备 godot 和 rust 的操作,下面则可以开始编写第一个程序代码了。

第01节 修改lib.rs 文件内容

在路径project_dir\\myrust\\src\\lib.rs当中,替换lib.rs内部的内容

usegodot::prelude::*;structMyExtension;#[gdextension]unsafeimplExtensionLibraryforMyExtension{}modplayer;

针对于上述的内容,进行解释说明:



第02节 定义 Player.rs 文件

在路径project_dir\\myrust\\src\\当中,定义Player.rs文件

文件内容如下:

usegodot::prelude::*;usegodot::classes::Sprite2D;usegodot::classes::ISprite2D;#[derive(GodotClass)]#[class(base=Sprite2D)]pubstructPlayer{speed:f64,angular_speed:f64,base:Base<Sprite2D>,}#[godot_api]implISprite2DforPlayer{fninit(base:Base<Sprite2D>)->Self{godot_print!("Hello, world!");Self{speed:400.0,angular_speed:std::f64::consts::PI,base,}}fnphysics_process(&mutself,delta:f64){letradians=(self.angular_speed*delta)asf32;self.base_mut().rotate(radians);}}

针对于上述的内容,进行解释说明:



第03节 编译 rust

编写完毕 rust 代码之后,可以采用下面的命令,编译 rust,生成需要的库。

cargo build

编译完毕,如果正确的情况下,将会在 下面的路径中生成需要的库。

project_dir\myrust\target\debug

生成一些包含有 dll 的一些文件



第04节 在 godot 当中使用

我们可以在 godot 当中,定义一个场景,节点类型就可以选择刚刚定义的 rust 结构体中的Player

在 godot 当中的结构

运行的效果,就是 godot 默认的 icon 在进行旋转了。并且在控制台输出了 Hello, world!





第05节 参考资料

文章参考资料,来自于 The godot-rust book

https://godot-rust.github.io/book/intro/hello-world.html

对其中部分内容,进行了修改







http://www.jsqmd.com/news/527994/

相关文章:

  • Web of Science核心合集文献条目批量导出工具
  • Redis String结构详解:从底层原理到实战应用
  • Virtual Display Driver:零成本打造专业多屏环境的终极方案
  • 让大模型用代码说话(非常详细),CodeAct技术原理从入门到精通,收藏这一篇就够了!
  • Go应用内存泄漏排查手册:用pprof抓取heap数据+Graphviz可视化解析
  • Linux dos2unix 命令详解
  • DEAP进化算法框架全攻略:从理论认知到实战应用
  • Git Submodule 在微服务架构中的应用指南,uni-app 模板语法修复说明。
  • 遗产继承律师如何选不踩坑?2026年靠谱推荐处理遗嘱纠纷且经验丰富律师 - 十大品牌推荐
  • 2026年重庆、四川、湖北口碑不错的本地GEO优化品牌企业推荐,专业服务全解析 - 工业品网
  • 模型对比:LiuJuan20260223Zimage v1.0与主流文生图模型在国风题材上的效果差异
  • IP-guard实战指南:即时通讯安全管控全解析
  • Youtu-VL-4B-Instruct惊艳效果展示:手写体+印刷体混合图中分区域OCR+结构化输出
  • Linux网络故障排查指南:从‘Name or service not known‘到畅通无阻
  • 3大维度解析Java智能地址解析:从原理到落地的实践指南
  • MCP3008嵌入式ADC驱动库设计与SPI工程实践
  • string类中基本的知识点
  • 一条命令装好 Oracle 数据库?这个脚本做到了!
  • 深度剖析2026年云贵川地区GEO优化对市场竞争力作用大的靠谱公司 - 工业推荐榜
  • 每日一题3.23——最长稳定连续子数组
  • 8种主流LLM Agents开发框架盘点及MCP Server集成教程,小白程序员必备收藏!
  • 如何通过专注力训练方法改善多动症儿童的冲动行为?
  • 从零到一:打造你的个人智能图像检索系统
  • 2026年汽车贴膜改色价格大揭秘,哈尔滨这些品牌费用合理 - 工业品网
  • 开源工具KMS_VL_ALL_AIO:零基础安全使用与高效激活方案全指南
  • 北京拆迁补偿律师如何选择不踩坑?2026年靠谱推荐房产纠纷处理专业律师团队 - 十大品牌推荐
  • Cogito-V1-Preview-Llama-3B效果实测:对比Claude Code的代码生成能力
  • 2026年哈尔滨汽车贴膜改色选购攻略,靠谱公司怎么选 - 工业推荐榜
  • 细聊哈尔滨隐形车衣优质公司,选购时关注哪些品牌和价格? - mypinpai
  • 基于卷积神经网络思想的Tao-8k视觉描述优化