概念页
GDScript 与脚本语言选择
GDScript & Scripting Languages
Godot 官方支持 GDScript、C#,以及经 GDExtension 的 C/C++;可在同一项目混用。新手默认 GDScript;已有 C# 栈或极致性能热路径再考虑后两者。
原理
- 脚本挂在节点上扩展该节点:继承其属性与方法(如给
Camera2D加震屏)。 - GDScript:为 Godot 定制,语法轻、与编辑器/文档集成最紧,静态类型可选。
- C#:成熟,需外部 IDE;学习资源少于 GDScript;适合已有 .NET 团队。
- GDExtension (C/C++):原生扩展,适合热路径算法、对接现有 C++ 库;构建与 ABI 成本更高。
应用
- 玩法快速迭代 → GDScript;数值/AI 重计算或中间件 → C# / GDExtension。
- 跨语言:官方支持同一项目多语言协作(文档见 cross-language scripting)。
取舍
| 选项 | 优势 | 代价 |
|---|---|---|
| GDScript | 最快上手、文档全、热重载友好 | 极端 CPU 密集不如原生 |
| C# | 生态/工具链、强类型 | 编辑器外工具、部分 API 差异 |
| GDExtension | 性能与原生互操作 | 构建、调试、发布复杂度 |
- 初学者几乎总应先 GDScript;「先会引擎再优化语言」比反过来高效。
- UE 对照:GDScript ≈ 蓝图+轻脚本中间带;GDExtension ≈ 模块/插件 C++。
参见
出处
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- docs.godotengine.org/en/stable/getting_started/step_by_step/scripting_languages.html
- docs.godotengine.org/en/stable/tutorials/scripting/gdscript/index.html
相关页面
游戏开发 · Godot节点与场景Nodes & ScenesGodot 把游戏抽象成「场景树」:节点是最小积木,场景是可复用的节点树蓝图;场景可嵌套实例化,同时扮演其他引擎中 Prefab 与关卡的角色。游戏开发 · GodotGodot 最佳实践与场景组织Godot Best Practices官方最佳实践系列从真实问题出发,强调 OOP 原则在节点/场景上的落地:场景声明组合、脚本声明行为;Autoload 慎用;别把一切都做成 Node。游戏开发游戏脚本系统Game Scripting脚本语言是主要用来让用户控制和定制软件行为的编程语言;在游戏引擎中,它是高层、相对易用、能方便访问引擎大多数常用功能的语言,程序员和非程序员都能用它开发新游戏或给现有游戏做 mod。GEA 先区分数据定义语言和运行时脚本语言,梳理语言分类与游戏脚本的典型特征(解释执行、轻量、快速迭代、方便),介绍 QuakeC、UnrealScript、Lua、Python、Pawn,列出从"脚本回调"到"脚本驱动整个游戏"的六种架构,再以 Naughty Dog 的 DCScript 为例讲虚拟机与原生函数接口,最后是对象引用、事件收发、面向对象脚本、脚本状态机和协作式多线程脚本(GEA4 卷 II 17.游戏开发 · UE5蓝图与 C++ 协作Blueprint & C++ InteropEpic 官方建议:多数项目混用蓝图 (Blueprint) 与 C++,以 C++ 作为基础、在其上构建蓝图类。C++ 适合“编程”——定义系统;蓝图适合“脚本”——在已有系统上定义具体行为。两者通过反射说明符互相调用:C++ 用 BlueprintCallable/BlueprintReadWrite 等暴露给蓝图,用 BlueprintImplementableEvent/BlueprintNativeEvent 让蓝图实现或覆盖 C++ 声明的函数。