GDScript快速入门(适合有其它编程语言基础)

GDScript 2.0 快速入门(适合有其它编程语言基础)

从零开始学 GDScript 2.0

Godot 是一款开源、跨平台的游戏引擎,因其轻量、易用和强大的功能而受到广大开发者的喜爱。在 Godot 4 中,GDScript 2.0 进一步升级,提供更完善的静态类型、异步支持与函数式编程特性。本文将带你从零开始,使用 Godot 4 的新用法,逐步掌握 GDScript 2.0。


什么是 GDScript 2.0?

GDScript 2.0 是随 Godot 4 发布的全新版本,保持了与 Python 类似的简洁语法,同时在编译时进行更多检查,并深度集成 Godot 节点系统。


第一个 GDScript 2.0 脚本

在 Godot 中,每个场景由多个节点组成。你可以为节点附加脚本,以定义其行为。以下示例展示了如何在 Godot 4 中注册一个脚本类并使用静态类型:

class_name HelloWorld
extends Node2D

func _ready() -> void:
    print("Hello, Godot 4!")
  • class_name HelloWorld:将此脚本注册为全局可用类型。
  • extends Node2D:继承自 Node2D。
  • func _ready() -> void:明确返回类型为 void

变量与数据类型

GDScript 2.0 强化了静态类型支持,推荐显式声明:

# 可变变量
var score: int = 0
var player_name: String = "Alice"
var is_alive: bool = true

# 常量
const MAX_LIVES: int = 5

使用 @onready 关键字加载节点引用:

@onready var player: Sprite2D = $Player

控制结构

条件语句

if score > 100:
    print("High score!")
elif score == 100:
    print("Exactly 100!")
else:
    print("Keep trying!")

循环语句

GDScript 2.0 支持更简洁的迭代语法:

# 使用 range
for i in range(5):
    print(i)

# 直接迭代数值范围(内置语法)
for i in 5:
    print(i)  # 0 到 4

函数与参数

func greet(name: String) -> void:
    print($"Hello, {name}!")

# 调用
greet("Bob")

信号与事件

内置信号连接

@onready var btn: Button = $Button

func _ready() -> void:
    btn.pressed.connect(_on_button_pressed)

func _on_button_pressed() -> void:
    print("按钮被按下!")

自定义信号

signal health_changed(new_health: int)

var health: int = 100

func take_damage(amount: int) -> void:
    health -= amount
    emit_signal(signal: health_changed, health)

func _ready() -> void:
    connect(signal: health_changed, callable(self, "_on_health_changed"))

func _on_health_changed(new_health: int) -> void:
    print($"生命值: {new_health}")

异步与 Lambda

Lambda 表达式

var double = func(x: int) -> int: x * 2
print(double(4))  # 输出 8

await 异步编程

func play_and_wait() -> void:
    $AnimationPlayer.play("run")
    await $AnimationPlayer.animation_finished
    print("动画播放完毕!")

最佳实践

  1. 启用静态类型检查:在项目设置中打开类型提示。
  2. 使用 class_name:提升脚本复用与自动补全。
  3. 合理运用 @onready:延迟加载节点引用。
  4. 利用信号机制:实现节点间松耦合。
  5. 避免硬编码:使用 const 或导出变量 (@export var)。

推荐资源

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值