节点与场景
1. 节点(Node)
- 是什么? ➔ 节点是游戏里的一个个“小部件”。
- 能做什么? ➔ 显示图片、播放声音、让角色跳跃、检测碰撞等等。
- 特别之处? ➔ 节点可以互相连接,组成「树」。
🧱 理解比喻: 每个节点就像一块乐高积木,单独没什么特别,但组合起来,可以搭建成复杂的城堡、城市、机器人。
1.1 为什么是“树结构”?
- 节点之间用树形组织,是为了方便继承父节点的变化:
- 父节点移动,子节点跟着动。
- 父节点被删除,子节点也一并销毁。
- 这种结构让管理复杂对象(比如角色带着装备)变得自然又简单。
1.2 Godot内部类型体系(节点在系统中的位置)
Object (所有万物之源)
├── Node(可以放在场景树上的)
│ ├── Node2D(2D世界)
│ ├── Node3D(3D世界)
│ └── Control(UI按钮界面)
└── RefCounted(后台功能类,比如资源加载)
🔔 注意:不是所有 Object 都能进场景树,只有 Node
系列可以!
📚 节点类型用途一览表:
节点类型 | 适用场景 |
---|---|
Node2D | 2D游戏,如横版过关、塔防、平台跳跃 |
Node3D | 3D游戏,如第一人称射击、开放世界探索 |
Control | UI界面,如按钮、标签、进度条、菜单 |
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
这就是一个最简单的节点树了!(建议手动实现一下)