继承树
最后同步日期:2026-04-15 | Godot 官方原文 — Inheritance class tree
继承树
Godot 引擎中的类并不是"各自为政"的——它们组成了一棵庞大的继承树。就像现实中的家谱一样,子类从父类那里"遗传"了属性和方法,同时还可以添加自己的新功能。
理解继承树,就等于拿到了理解整个 Godot 引擎类体系的"地图"。当你看到一个不认识的节点类型时,只要沿着继承树往上看,就能知道它继承了哪些能力。
Object 树(核心根节点)
Object 是整个 Godot 类体系的绝对根节点。我们在Object 类一章中详细介绍过它——所有 Godot 类最终都继承自 Object。
从这棵树可以看到,Godot 的核心类大致分为几大家族:
| 家族 | 根类 | 用途 |
|---|---|---|
| 节点家族 | Node → Node2D / Node3D / Control | 组成场景树,是游戏世界的"演员" |
| 资源家族 | Resource(通过 RefCounted) | 数据容器,如纹理、网格、音频等 |
| 工具家族 | 直接继承 Object | 引擎内部使用的工具类,如 Input、OS 等 |
RefCounted 树(引用计数)
RefCounted 继承自 Object,是所有"自动管理内存"的类的基类。我们在Object 类中介绍过它的引用计数机制。
这棵树告诉我们:所有资源类型都是引用计数的。当你不再需要它们时,只要所有 Ref<> 指针都释放了,资源就会自动从内存中消失。
Control 树(GUI 控件)
Control 是所有 GUI(图形用户界面)控件的基类。无论你是做按钮、标签、滑块还是复杂的 UI 面板,都离不开这棵树。
提示
在 Godot 编辑器的"场景"面板中,右键点击一个 Control 节点,选择"添加子节点",就能看到这棵继承树的可视化版本。
Node2D 树(2D 节点)
Node2D 是所有 2D 场景节点的基类。它提供了 2D 空间中的位置、旋转和缩放功能。
从继承关系可以快速理解节点的能力:
- 继承了
CollisionObject2D的节点都能参与碰撞检测 - 继承了
PhysicsBody2D的节点都受物理引擎控制 Area2D用于检测区域重叠,本身不受物理影响CharacterBody2D是专门为玩家角色设计的物理体
Node3D 树(3D 节点)
Node3D 是所有 3D 场景节点的基类。它提供了 3D 空间中的位置、旋转和缩放功能。
如何使用继承树
在实际开发中,继承树有以下几个实用价值:
1. 快速了解一个节点的能力
当你看到一个陌生的节点类型(比如 AnimatableBody3D)时,只需沿继承树往上看:
AnimatableBody3D → PhysicsBody3D → CollisionObject3D → Node3D → Node → Object从中你可以立刻知道:
- 它是一个 3D 物理体(
PhysicsBody3D) - 它有碰撞检测能力(
CollisionObject3D) - 它可以放在场景树中(
Node) - 它拥有 Object 的所有基础能力
2. 安全的类型转换
在代码中,你可以利用继承关系进行安全的类型判断和转换:
// 判断节点是否继承自某个类
if (node is CollisionObject3D)
{
// 安全转换
var collider = (CollisionObject3D)node;
}# 判断节点是否继承自某个类
if node is CollisionObject3D:
# 安全转换
var collider = node as CollisionObject3D3. 查找原始图片
Godot 官方提供了完整的继承树高清图片,你可以从以下链接查看:
| 继承树 | 图片链接 |
|---|---|
| Object 完整继承树 | Object.webp |
| RefCounted 完整继承树 | RefCounted.webp |
| Control 完整继承树 | Control.webp |
| Node2D 完整继承树 | Node2D.webp |
| Node3D 完整继承树 | Node3D.webp |
源文件:Godot 官方还提供了这些图片的源文件(
class_tree.zip),可以用绘图工具编辑。
提示
在 Godot 编辑器的内置类参考中搜索任意一个类,页面顶部都会显示它的完整继承链——这也是一种快速了解类关系的便捷方式。
