Skip to main content

节点与场景

1. 节点(Node)

  • 是什么? ➔ 节点是游戏里的一个个“小部件”。
  • 能做什么? ➔ 显示图片、播放声音、让角色跳跃、检测碰撞等等。
  • 特别之处? ➔ 节点可以互相连接,组成「树」。

🧱 理解比喻: 每个节点就像一块乐高积木,单独没什么特别,但组合起来,可以搭建成复杂的城堡、城市、机器人。


1.1 为什么是“树结构”?

  • 节点之间用树形组织,是为了方便继承父节点的变化
    • 父节点移动,子节点跟着动。
    • 父节点被删除,子节点也一并销毁。
  • 这种结构让管理复杂对象(比如角色带着装备)变得自然又简单。

1.2 Godot内部类型体系(节点在系统中的位置)

Object (所有万物之源)
├── Node(可以放在场景树上的)
│ ├── Node2D(2D世界)
│ ├── Node3D(3D世界)
│ └── Control(UI按钮界面)
└── RefCounted(后台功能类,比如资源加载)

🔔 注意:不是所有 Object 都能进场景树,只有 Node 系列可以!

📚 节点类型用途一览表:

节点类型适用场景
Node2D2D游戏,如横版过关、塔防、平台跳跃
Node3D3D游戏,如第一人称射击、开放世界探索
ControlUI界面,如按钮、标签、进度条、菜单

2. 场景(Scene)

  • 是什么? ➔ 场景是一组节点组成的整体。
  • 能做什么? ➔ 场景可以是一个角色、一张地图、一个界面。
  • 特别之处? ➔ 场景本身也能像节点一样被用在别的场景里!

🏡 理解比喻

场景像一座房子,里面用各种积木(节点)搭起来。 房子可以自己存在,也可以放到更大的城市(游戏世界)里。

3. 节点和场景的关系

3.1 核心概念

  • 一个场景就是一棵节点树。
  • 每个场景都有一个「根节点」。
  • 场景之间可以相互嵌套,一个场景实例化为另一个场景的子节点。

3.2 例子示意

MainScene (Node2D)
├── Player (实例化的 Player.tscn)
│ ├── Sprite2D
│ └── CollisionShape2D
├── Enemy (实例化的 Enemy.tscn)
└── Map (TileMap)

4.小例子:制作一个简单角色

👾 制作一个玩家角色:

  • 创建新场景(Player.tscn)
  • 根节点:CharacterBody2D
  • 加两个子节点:
    • Sprite2D ➔ 负责显示角色图片
    • CollisionShape2D ➔ 负责检测是否撞到东西

组成的样子像这样:

Player (CharacterBody2D)
├── Sprite2D
└── CollisionShape2D

这就是一个最简单的节点树了!(建议手动实现一下)

5. 小思考练习(引导理解)

🧠 思考题:

  • 如果我要制作一个血条(HP条),应该使用 Node2D 还是 Control?为什么?
点击查看答案

答:使用 `Control`,因为血条属于 UI 元素,需要跟随屏幕而非场景坐标变化。

6.小结

核心点理解
节点(Node)游戏功能的最小单位,像乐高积木
场景(Scene)由节点组成的整体,像用积木搭的房子
节点树节点父子关系组成的层级结构
类型体系只有 Node 类及其子类能放入场景树;RefCounted 属于后台资源类