场景系统是 Godot 引擎中管理游戏对象如何组织、显示以及相互交互的基础架构。它为游戏中的所有对象提供了分层结构,并处理场景切换、对象实例化以及节点在其生命周期中的处理。
其核心是,Godot 的场景系统构建在一个树状结构上,其中 **节点** 是基本构建块。这些节点以分层方式组织起来,形成 **场景**,场景可以保存、加载和实例化。**SceneTree** 管理着这个层级结构,并作为引擎的主循环实现。
来源
Node 类是场景系统的基础。它提供了基本功能用于
Godot 中的所有其他节点类型都继承自 `Node` 类,并扩展了特定的行为(2D、3D、UI 等)。
来源
SceneTree 类管理整个节点层级并协调游戏循环。它
来源
Viewport 为游戏世界提供了视图。它负责
来源
Window 类扩展了 Viewport,提供窗口功能。它管理
来源
节点进入和退出场景树时会遵循特定的生命周期。理解这个生命周期对于正确的场景管理至关重要。
当一个节点被添加到场景树时
处理时
当一个节点被移除时
来源
场景是节点的层级集合,可以保存到磁盘并多次实例化。场景的顶层节点称为该场景的“根节点”。
Godot 场景系统最强大的功能之一是能够将场景实例化到其他场景中。这实现了模块化设计和组件重用。
SceneTree 通过 `change_scene_to_file()` 和 `change_scene_to_packed()` 等方法管理场景切换。
来源
节点可以组织成组,以便于管理
SceneTree 提供用于处理组的方法
来源
场景系统包含一个全面的输入处理机制
输入传播顺序
来源
场景系统管理多个坐标系
Viewport 管理这些坐标系之间的变换,并提供在它们之间进行转换的方法。
来源
场景系统与 Godot 的 GUI 系统集成,其中 Control 节点(UI 元素)组织在同一个场景树中
控件使用特殊的锚定和尺寸系统进行布局
来源
控件可以使用主题系统进行样式设置,主题系统提供了一种定义和重用视觉属性的方法
主题可以
来源
视口系统处理渲染管线并管理场景中哪些部分是可见的
视口可以嵌套,从而实现画中画、分屏和渲染到纹理等技术。
来源
Godot 的场景系统提供了一种灵活的层级结构来组织游戏对象。它管理节点的生命周期,协调输入处理,并与渲染和 GUI 系统集成。通过理解节点、场景和场景树如何协同工作,开发人员可以创建结构良好且易于维护的游戏。
场景系统的优势在于其模块化和灵活性,允许将场景实例化到其他场景中,从而在保持组织性的同时创建复杂的层级结构。这种架构是 Godot 引擎处理游戏开发的核心。