3个版本

0.1.3 2024年7月22日
0.1.2 2024年7月15日
0.1.1 2024年6月24日
0.1.0 2016年5月30日

#202 in 游戏开发

Download history 1/week @ 2024-06-07 1/week @ 2024-06-14 291/week @ 2024-06-21 220/week @ 2024-06-28 236/week @ 2024-07-05 341/week @ 2024-07-12 345/week @ 2024-07-19 139/week @ 2024-07-26 185/week @ 2024-08-02 73/week @ 2024-08-09 126/week @ 2024-08-16

561 每月下载量
用于 4 crates

MPL-2.0 许可证

1MB
18K SLoC

logo.png

Rust对Godot 4的绑定

网站 | GitHub | 书籍 | API 文档 | Discord | Mastodon | Twitter | 赞助

godot crate将Rust语言与Godot 4集成。

Godot 是一个开源的游戏引擎,专注于高效且全面的2D和3D体验。
GDExtension API允许集成第三方语言和库。

哲学

Rust绑定是GDScript的替代品,注重类型安全、可扩展性和性能。

此库的主要目标是提供一个 实用Rust API,供游戏开发者使用。常见的操作应简单且需要最少的模板。API旨在尽可能安全且符合Rust习惯。由于与C++引擎Godot交互,我们有时会采用非常规方法来提供良好的用户体验。

示例

以下代码片段演示了在Rust中编写简单的Godot类 Player

use godot::prelude::*;
use godot::classes::{ISprite2D, Sprite2D};

// Declare the Player class inheriting Sprite2D.
#[derive(GodotClass)]
#[class(base=Sprite2D)]
struct Player {
    // Inheritance via composition: access to Sprite2D methods.
    base: Base<Sprite2D>,

    // Other fields.
    velocity: Vector2,
    hitpoints: i32,
}

// Implement Godot's virtual methods via predefined trait.
#[godot_api]
impl ISprite2D for Player {
    // Default constructor (base object is passed in).
    fn init(base: Base<Sprite2D>) -> Self {
        Player {
            base,
            velocity: Vector2::ZERO,
            hitpoints: 100,
        }
    }

    // Override the `_ready` method.
    fn ready(&mut self) {
        godot_print!("Player ready!");
    }
}

// Implement custom methods that can be called from GDScript.
#[godot_api]
impl Player {
    #[func]
    fn take_damage(&mut self, damage: i32) {
        self.hitpoints -= damage;
        godot_print!("Player hit! HP left: {}", self.hitpoints);
    }
}

更多信息

有关更多信息,请访问我们的 网站GitHub 页面!

依赖项

~3.5–6MB
~142K SLoC