
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.dll1、前面的第一个 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(baseSprite2D)]pubstructPlayer{speed:f64,angular_speed:f64,base:BaseSprite2D,}#[godot_api]implISprite2DforPlayer{fninit(base:BaseSprite2D)-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 bookhttps://godot-rust.github.io/book/intro/hello-world.html对其中部分内容进行了修改