Godot 引擎入门:开源游戏开发

FreeGuideOnline 最新 2026-06-17

Godot 引擎入门:开源游戏开发

欢迎来到 Godot 引擎的入门教程!无论你是完全没有游戏开发经验的新手,还是希望从其他引擎转向开源的开发者,本指南都将带你快速上手 Godot 4,迈出游戏创作的第一步。

什么是 Godot?

Godot 是一款功能齐全、完全免费且开源的游戏引擎,采用宽松的 MIT 许可证。它支持 2D 和 3D 游戏开发,拥有直观的场景与节点架构、专用的 2D 渲染管线、以及易于学习的脚本语言 GDScript。Godot 的社区活跃,文档完善,且不需要任何许可费用或版税分成。

为什么选择 Godot?

  • 完全免费:零成本使用,发布游戏无需付费或分享收益。
  • 开源透明:引擎源码公开,可根据需要深度定制。
  • 极致的 2D 支持:专用 2D 引擎,像素坐标完美,工作流流畅。
  • 灵活的场景系统:将游戏元素构建为可复用的节点树。
  • 轻量且高效:安装包小,启动快,对低配硬件友好。
  • 跨平台发布:一次开发,可导出到 Windows、macOS、Linux、Android、iOS、Web 等多个平台。

安装与项目创建

下载 Godot

  1. 访问 Godot 官方网站
  2. 点击下载按钮,选择适合你操作系统的版本(Windows、macOS 或 Linux)。推荐下载标准版(Standard),无需控制台版本(.NET 版)即可开始。
  3. 解压下载的文件,直接运行可执行文件——Godot 无需安装,即开即用。

创建你的第一个项目

  1. 启动 Godot,点击 “新建项目”
  2. 输入项目名称(例如 “My First Game”)。
  3. 选择一个存储位置。
  4. 渲染器保持默认(Forward+),适合大多数现代设备;如果需要兼容更老的硬件或移动设备,可选择 Mobile 或 Compatibility。
  5. 点击 “创建文件夹并打开”,你将进入 Godot 编辑器的主界面。

理解 Godot 的核心概念

场景与节点:一切皆节点

Godot 的核心哲学是 “场景即一切”。一个游戏是由多个场景构成的,而场景则是由各种 节点 组成的树形结构。节点可以代表图像、声音、物理体、计时器、玩家角色等一切元素。

常见节点类型
  • Node2D / Node3D:2D 或 3D 场景的根节点。
  • Sprite2D:显示 2D 纹理(图片)。
  • CollisionShape2D / CollisionShape3D:碰撞检测形状。
  • Area2D:用于检测物体进入区域的事件。
  • RigidBody2D:模拟物理的刚体。
  • CharacterBody2D:用于由脚本控制的运动角色。
  • CanvasLayer:用于 UI 层,常用于制作 HUD。
  • Label:显示文本。
  • Button:按钮控件。
  • Timer:计时器节点。

节点通过父子关系组织,子节点继承父节点的位置、旋转和缩放变换。你可以将任何一组节点保存为一个场景(.tscn 文件),并在其他场景中实例化它,实现模块化复用。

GDScript 快速上手

GDScript 是 Godot 的内置脚本语言,语法类似 Python,专为游戏开发优化,与引擎深度集成。

编写你的第一段代码
  1. 在场景树中选择一个节点(例如,添加一个 Sprite2D 节点)。
  2. 点击“添加脚本”图标(或右键 -> 附加脚本)。
  3. 在弹出窗口中,Language 选择 GDScript,路径保持默认。
  4. 脚本会自动继承你选择的节点类型,你会看到 extends Sprite2D
  5. func _ready(): 函数中添加代码,该函数会在节点初始化后调用。

示例:让精灵随帧运动

extends Sprite2D

var speed = 200

func _process(delta):
    # 获取输入方向
    var direction = Vector2.ZERO
    if Input.is_action_pressed("ui_right"):
        direction.x += 1
    if Input.is_action_pressed("ui_left"):
        direction.x -= 1
    if Input.is_action_pressed("ui_down"):
        direction.y += 1
    if Input.is_action_pressed("ui_up"):
        direction.y -= 1
    
    # 移动精灵
    position += direction.normalized() * speed * delta
  • _process(delta) 每帧调用,delta 代表帧间隔时间,保证运动与帧率无关。
  • Input.is_action_pressed() 检查输入动作是否被按下(需在“项目设置”的“输入映射”中预先定义)。
  • position 是节点的当前位置。

信号:连接节点之间的通信

信号是 Godot 的解耦通信方式。当某个事情发生时(如按钮被按下、碰撞检测触发),节点会发出信号,其他节点可以监听该信号来响应。

示例:连接按钮的 pressed 信号

  1. 创建一个 Button 节点。
  2. 在工具栏中切换到“节点”选项卡,找到 pressed() 信号。
  3. 双击它,选择目标节点(通常是根节点或拥有脚本的节点),输入方法名称(如 _on_button_pressed),点击“连接”。
  4. 脚本中会自动生成一个方法,在其中编写响应逻辑。
func _on_button_pressed():
    print("按钮被按下了!")
    # 这里可以切换场景、播放音效等

构建一个简单的 2D 避障小游戏

现在让我们动手将所学概念串联起来,制作一个可以左右移动玩家、躲避下落障碍物的迷你游戏。

1. 搭建玩家场景

  • 新建一个 CharacterBody2D 节点作为玩家根节点,命名为 Player
  • 为其添加 CollisionShape2D 子节点,形状设为矩形 (RectangleShape2D)。
  • 添加 Sprite2D 子节点,赋予一个简单的方形图片作为角色外观。
  • 附加脚本到 Player,写入移动代码(可参考上面的 GDScript 示例,但使用 CharacterBody2Dmove_and_slide() 方法)。
extends CharacterBody2D

var speed = 400

func _physics_process(delta):
    var direction = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
    velocity = direction * speed
    move_and_slide()

2. 创建障碍物

  • 新建 RigidBody2D 节点作为障碍物。
  • 添加 CollisionShape2DSprite2D,形状同样设为矩形。
  • 附加脚本,让障碍物从顶部坠落并在离开屏幕下方时删除自身。
extends RigidBody2D

func _ready():
    # 设置随机水平位置
    position.x = randi_range(50, 600)
    position.y = -50
    linear_velocity = Vector2(0, 200) # 向下移动

func _physics_process(delta):
    if position.y > get_viewport_rect().size.y + 50:
        queue_free()

3. 组装关卡场景

  • 创建一个新的 Node2D 根节点作为主场景。
  • 实例化玩家场景拖入主场景,或使用“实例化子场景”按钮。
  • 添加一个 Timer 节点,设置其 wait_time 为 1 秒,one_shot 为 false,并连接其 timeout 信号到主场景脚本。
extends Node2D

var obstacle_scene = preload("res://obstacle.tscn")

func _on_timer_timeout():
    var obstacle = obstacle_scene.instantiate()
    add_child(obstacle)
  • _ready 中启动定时器即可。

4. 碰撞检测与游戏结束

  • Player 场景中,为 Area2D 节点(或直接使用 CharacterBody2D 的碰撞)设置碰撞层和掩码。
  • 连接 body_entered 信号,当玩家与障碍物接触时,可以重新加载场景或显示“游戏结束”。

导出你的游戏

当你完成开发并测试无误后,就可以将游戏导出为可执行文件。

  1. 点击顶部菜单 项目 -> 导出
  2. 添加一个预设(如 Windows Desktop)。
  3. 如果需要资源优化,可以勾选 .zip.pck 选项。
  4. 点击“导出项目”并选择保存路径,Godot 会生成可执行文件和数据包。

下一步学习路径

  • 官方文档:Godot 自带详尽的在线/离线文档(在编辑器内按 F1 即可搜索)。
  • 示例项目:在项目启动器或资产库中获取官方 demo,学习各种功能实现。
  • 节点深入:探索 TileMap(瓦片地图)、AnimationPlayer(动画系统)、AudioStreamPlayer(音频)等核心节点。
  • 3D 之旅:一旦熟悉 2D,可以尝试 3D 场景,利用 Spatial 节点、材质和光照制作立体世界。
  • Shader 编程:学习 Godot 的着色器语言,创造独特的视觉效果。

Godot 引擎的魅力在于它的简约与强大并存。现在就开始你的第一款游戏,享受创造的乐趣吧!