自定义 resources

自定义 Resource 类型可以暴露给终端用户,在他们的开发过程中使用。Resource 类型能够存储可以在编辑器 GUI 中轻松编辑的数据。例如,您可以创建一个自定义的 AudioStream 类型,用来处理一种新颖且有趣的音频文件类型。

注册 Resource

这个工作流与 Hello World example类似:

#![allow(unused)]
fn main() {
#[derive(GodotClass)]
#[class(init, base=Resource)]
struct ResourceType {
    base: Base<Resource>,
}
}

上述resource没有导出任何变量。虽然并非所有resource都需要导出变量,但大多数resource都需要。

如果你的自定义resource有需要在编辑器中运行的生命周期方法(例如 ready()process() 等),你应该使用 #[class(tool)] 注解该类。

#![allow(unused)]
fn main() {
#[derive(GodotClass)]
#[class(tool, init, base=Resource)]
struct ResourceType {
    base: Base<Resource>,
}

#[godot_api]
impl IResource for ResourceType {
  fn init(base: Base<Resource>) -> Self { ... }
}
}

与在 GDScript 中定义自定义resources类似,重要的是将这个类标记为“工具类”,这样它才可以在编辑器中使用。

关于如何注册函数、属性等系统,可以在 注册 Rust 符号 部分找到详细描述。