这是一个简短的使用铁锈和戈多3.2的指南。本文在编写时考虑到了Linux,但是大部分知识应该可以移植到MacOS和Windows上。
将Rust代码和Godot项目分开是值得的,因为我体验过Godot时不时地尝试从Rust项目导入各种文件,留下相当长的等待时间盯着进度条。
#[宏_使用]外部机箱gdative;#[派生(gdative::NativeClass)]#[Inherit(gdative::Node)]struct HelloWorld;#[gdative::Methods]Impll HelloWorld{fn_init(_owner:gdative::node)->;self{HelloWorld}#[export]FN_Ready(&;self,_owner:gdative::node){Godot_Print!)}}fn init(Handle:gdative::init::InitHandle){handle.add_class::<;HelloWorld>;();}godot_gdative_init!();godot_nativescript_init!(Init);godot_gdative_Terminate!();
运行Cargo Build,您应该在target/debug/中有一个lib<;projectname>;.so文件(其中<;projectname>;是您的项目的名称),一旦该文件被创建,就应该将其复制/移动到您的Godot项目中。
如果在Mac上执行此操作,则文件扩展名为.dylib,而不是.so,而在Windows上为.dll。
如果您使用的是MacOS或Windows,请选择相应的平台。同样适用于32位和64位。
选择库后,保存GDNativeLibrary,因为保存场景时不会保存它,并确保文件扩展名为.gdnlib(默认为.tres)。
这是最后一步。一旦您创建(并保存!)。您终于可以添加一个节点并将HelloWorld结构附加到它。
如果您将第4步中的代码复制到lib.rs中,您可能已经注意到在#[Inherit(gdative::Node)]中使用Node作为所有者类型。
如果要使用其他节点类型,例如空间或精灵,请将节点替换为新的节点类型。
在“Language”部分中,将“GDScript”更改为“NativeScript”,并在类名中输入“HelloWorld”(这应该是您的结构的名称)。
最后,您需要加载步骤5中的gdnlib文件。选择“Library”下拉列表(当前为[空]),选择“Load”,最后选择您的gdnlib文件。
如果您使用F6键(或按“Play Scene”)运行项目,您应该会看到“hello,world”。在Godot输出控制台中。
它将gdnativedocumentation(运行Cargo文档--从您的Rust项目中打开)与Godot文档结合起来:https://docs.godotengine.org/en/stable/index.html,,例如查看RUST文档中的Call签名,以及Godot文档中的默认值,这将有助于弄清楚大多数事情是如何工作的。
如果您希望在发生死机时查看堆栈跟踪,并且正在为Release进行构建,请将以下内容添加到Cargo.toml文件中: