Godot 的设计理念17 Mar 2025 | 5 分钟阅读 每个游戏引擎都不同,并且有不同的要求。这不仅提供了各种各样的功能;每个引擎的设计都是独特的。这导致了不同的工作流程和不同的游戏结构方法。 此页面帮助我们了解 Godot 的工作原理,从它的一些关键支柱开始。这不是可用功能的列表,也不是引擎比较。要了解任何引擎是否对我们的项目有用,我们需要亲自尝试并了解其设计和局限性。 面向对象的设计和组合Godot 以面向对象的设计为核心,具有灵活的可视化系统和节点层次结构。它试图避免严格的编程模式,以直观的方式呈现我们游戏的结构。 首先,Godot 允许我们**组合**或**聚合**场景。这就像嵌套的预制件:我们可以创建一个**闪烁的灯**场景和一个使用**闪烁的灯**的**损坏的灯笼**场景。 然后,创建一个充满**损坏的灯笼**的城市。 更改**闪烁的灯**的颜色,保存,所有损坏的灯笼。 更改闪烁灯的颜色,保存,城市中所有的损坏灯笼将立即更新。 最重要的是,我们可以从任何场景继承。 一个 Godot 场景可以是一个武器、一个角色、一个物品、一扇门、一个关卡,一个关卡。 任何我们喜欢的东西。 它的工作方式类似于纯代码中的类,除了我们可以自由地使用编辑器设计它,仅使用代码,或者混合搭配两者。 我们可以创建一个扩展我们角色的魔法师,在编辑器中修改角色,魔法师也会更新。 这有助于我们构建项目,以便它们的结构与 Godot 设计匹配。 ![]() Godot 提供了不同类型的对象,称为节点,具有特定用途。 节点是树的一部分,并且始终从其父节点继承到节点类中。 尽管引擎具有诸如碰撞大小之类的组件,但它们是例外,而不是常态。 ![]() Sprite 是 Node2D,一个节点和一个 CanvasItem。 它具有其三个父类的所有属性和特性,例如绘制变换或自定义形状以及使用自定义着色器渲染的能力。 全包式套件Gadot 试图提供他的工具来响应最常见的需求。 它具有专用的脚本工作区、动画编辑器、一个 **tilemap 编辑器**、一个 **shader 编辑器**、一个 **debugger**、一个 **provider**,以及在本地和远程设备上热重载的能力。 ![]() 目标是拥有一个完整的包来创建游戏和持续的用户体验。 只要有导入插件,我们仍然可以使用外部程序。 或者我们可以创建一个,比如 **Tiled Map Importer**。 这也在一定程度上解释了为什么 Godot 使用它的编程语言 **GDscript** 和 **VisualScript**,以及 C#。 它们是为游戏开发者和游戏设计师的需求而设计的,并且与引擎和编辑器紧密集成。 GDScript 允许我们使用类似 Python 的语法编写简单的代码,但它可以检测类型并提供静态语言的自动完成质量。 它还针对具有内置扇区和颜色的游戏代码进行了优化。 请注意,使用 GDNative,我们可以使用编译语言(例如 C、C ++、Rust 或 Python(使用 Cython 编译器))编写高性能代码,而无需重新安装引擎 ![]() **VisualScript** 是一种基于节点的编程语言,在编辑器中集成良好。 我们可以将节点或资源拖放到图中以创建新的代码块。 请注意,3D 工作区没有 2D 工作区那么多的工具。 我们将需要外部程序或插件来编辑地形、动画复杂的角色。 Godot 提供了完整的 API,可以使用游戏代码扩展编辑器的功能。 请参阅下面的 Godot Editor,是一个 Godot 游戏。![]() 开源Godot 在 MIT 许可下提供开源代码库。 与它一起发布的所有技术也都是免费的。 在大多数情况下,它们都是由贡献者从头开始编写的。 任何人都可以在需要时插入专有工具以满足其项目的需求; 但它们不能与引擎一起发布。 它们包括 NViDia PhysX, Google Admob,或一个 FBX 文件导入器。 任何这些都可能以第三方插件的形式出现。 另一方面,开放的代码库意味着我们可以学习和扩展引擎,以满足我们的需求。 我们可以轻松调试游戏,因为 Godot 会打印带有堆栈跟踪的错误,即使它们来自引擎本身。 注意 |
我们请求您订阅我们的新闻通讯以获取最新更新。