📜  const godot gdscript - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:14:14.768000             🧑  作者: Mango

介绍

在游戏开发中,使用合适的编程语言可以提升开发效率,提高游戏性能。Godot引擎使用的编程语言是GDScript,它是由Godot引擎开发团队开发的一种高级脚本语言,其基于Python语言,并且扩展了许多操作符和语法糖以提供更好的编程体验。

此外,Godot还支持C++编程语言提供的API(应用程序接口)扩展。这意味着您可以使用C++编写更高效的代码,并与GDScript代码集成。

GDScript

特性
  • 动态类型:您不需要在变量定义时指定类型。
  • 垃圾收集:无需手动管理内存,GC会自动处理。
  • Python语法:简化代码和算法,优美的语法风格。
  • 临时脚本:可以在编辑器中写脚本并立即运行,以快速测试和ProtoType 应用程序。
示例代码

下面是一个用GDScript编写的示例:

extends Sprite

var speed = 200

func _process(delta):
    if Input.is_action_pressed("ui_right"):
        position.x += speed * delta
    if Input.is_action_pressed("ui_left"):
        position.x -= speed * delta
    if Input.is_action_pressed("ui_down"):
        position.y += speed * delta
    if Input.is_action_pressed("ui_up"):
        position.y -= speed * delta

这段代码是一个简单的精灵控制器。它使用用户输入控制精灵在X/Y轴上的移动。

开发工具
  • Godot引擎:提供了GDScript编辑器和Debug器。
  • Visual Studio Code插件:提供代码完成功能和自动完成。

C++扩展

特性
  • 静态类型:需要在定义变量时指定类型。
  • 手动内存管理:必须标明何时申请和释放内存。
  • C++语法:优秀的性能和广泛的支持。
示例代码

GDNative(从C++扩展中连接的GDScript API)可以使用GDScript代码与C++编写的扩展进行交互。

下面是一个用C++编写的示例:

#include <Godot.hpp>
#include <Sprite.hpp>

namespace godot {

class SpriteController : public Sprite {
    GODOT_CLASS(SpriteController, Sprite)

public:
    static void _register_methods();

    void _process(float delta);

    SpriteController();
    ~SpriteController();

    int speed;
};

void SpriteController::_register_methods() {
    // 注册以供脚本使用的函数
    register_method("_process", &SpriteController::_process);

    // 注册可导出的属性
    register_property<SpriteController, int>("speed", &SpriteController::speed, 200);
}

SpriteController::SpriteController() {
    // 可以在构造函数中初始化对象
    speed = 200;
}

SpriteController::~SpriteController() {
    // 可以在析构函数中清理对象
}

void SpriteController::_process(float delta) {
    // 脚本使用的功能
    if (Input::get_singleton()->is_action_pressed("ui_right")) {
        set_position(get_position() + Vector2(speed * delta, 0));
    }
}
}

// Godot调用的入口点
// 扩展必须以“Godot”命名空间作为起始点
extern "C" void GDN_EXPORT godot_gdnative_init(godot_gdnative_init_options *options) {
    Godot::gdnative_init(options);
}

// Godot调用的入口点
// 扩展必须以“Godot”命名空间作为起始点
extern "C" void GDN_EXPORT godot_gdnative_terminate(godot_gdnative_terminate_options *options) {
    Godot::gdnative_terminate(options);
}

// Godot调用的入口点
// 扩展必须以“Godot”命名空间作为起始点
extern "C" void GDN_EXPORT godot_nativescript_init(void *handle) {
    Godot::nativescript_init(handle);

    // 注册扩展类
    register_class<SpriteController>();
}

这段代码是一个简单的精灵扩展,它提供了与GDScript脚本交互的新属性和功能。

开发工具
  • C++编译器:提供代码编辑器和调试器。
  • Godot Header API:提供与Godot引擎交互的C++接口。