ParallaxBackground
2026/4/14大约 2 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — ParallaxBackground
ParallaxBackground
节点继承关系
继承链:Node -> CanvasLayer -> ParallaxBackground
继承自 Node
| 类型 | 名称 | 说明 |
|---|---|---|
| 属性 | Name | 节点名称 |
| 属性 | ProcessMode | 处理模式(始终 / 暂停时 / 仅编辑器) |
| 属性 | ProcessPriority | 处理优先级,数字越小越先执行 |
| 信号 | ready | 节点进入场景树并准备就绪 |
| 信号 | tree_entered | 节点进入场景树 |
| 信号 | tree_exited | 节点完全离开场景树 |
| 方法 | GetNode<T>() | 按路径获取子节点 |
| 方法 | AddChild() | 添加子节点 |
| 方法 | RemoveChild() | 移除子节点 |
| 方法 | QueueFree() | 帧结束后释放节点 |
| 方法 | GetParent() | 获取父节点 |
定义
ParallaxBackground 是视差背景的"容器"。它继承自 CanvasLayer,自带一个独立的画布层,专门用来放背景图层。它不会随着相机滚动而移动(或以不同速度移动),所以非常适合做游戏背景。
简单说:它是视差背景的大容器,里面放各个视差层(ParallaxLayer)。
使用频率:★★★ 一般常用
注意
在 Godot 4.x 中,推荐使用新的 Parallax2D 方案替代 ParallaxBackground + ParallaxLayer。但 ParallaxBackground 仍然可用。
节点用途
- 视差背景容器:承载多个视差层
- 独立背景层:自动在最底层的 CanvasLayer 中渲染
使用场景
| 场景 | 说明 |
|---|---|
| 2D横版游戏 | 放置天空、山脉、地面等多个视差层 |
| 滚动背景 | 整体控制背景的滚动偏移 |
常用节点搭配
| 搭配节点 | 搭配方式 |
|---|---|
| ParallaxLayer | 作为 ParallaxBackground 的子节点 |
生效必备素材/资源
需要配合 ParallaxLayer 和背景图片使用。
节点属性与信号
属性
| 属性 | 类型 | 默认值 | 继承自 | 说明 |
|---|---|---|---|---|
| scroll_offset | Vector2 | (0, 0) | ParallaxBackground | 滚动偏移量,可以用代码动态修改来滚动背景 |
| scroll_base_offset | Vector2 | (0, 0) | ParallaxBackground | 基础偏移量 |
| scroll_limit_begin | Vector2 | — | ParallaxBackground | 限制滚动范围的起点 |
| scroll_limit_end | Vector2 | — | ParallaxBackground | 限制滚动范围的终点 |
| repeating | bool | true | ParallaxBackground | 是否无限平铺背景 |
信号
ParallaxBackground 没有自己的特有信号。
常用方法
| 方法 | 返回值 | 说明 |
|---|---|---|
| GetScrollOffset() | Vector2 | 获取当前滚动偏移量 |
代码示例
C
// C# - 自动滚动的视差背景(如无尽跑酷游戏)
using Godot;
public partial class AutoScrollBackground : ParallaxBackground
{
[Export] public float ExScrollSpeed = 50f;
public override void _Process(double delta)
{
// 背景自动向左滚动
ScrollOffset = new Vector2(ScrollOffset.X - ExScrollSpeed * (float)delta, 0);
}
}GDScript
# GDScript - 自动滚动的视差背景(如无尽跑酷游戏)
extends ParallaxBackground
@export var scroll_speed: float = 50.0
func _process(delta):
# 背景自动向左滚动
scroll_offset = Vector2(scroll_offset.x - scroll_speed * delta, 0)