Godot多场景复用背景图:无需每个场景添加TextureRect的方法
解决Godot多场景共用背景图的方案
给你几个实用的方案,不用在每个场景里重复添加TextureRect:
1. 全局自动加载背景场景
这是最省心的方式,一次设置全场景通用:
- 新建一个单独的场景(比如命名为
GlobalBackground),根节点用Node2D或者CanvasLayer,里面只放一个TextureRect。 - 把你的背景图拖到
TextureRect的texture属性里,调整锚点为全屏(anchor_right=1、anchor_bottom=1),拉伸模式选适合的(比如STRETCH_KEEP_ASPECT_COVER防止变形)。 - 打开项目设置 → 自动加载,点击添加按钮,选择刚才的
GlobalBackground场景,启用自动加载。 - 这样所有场景运行时,这个背景会自动在最底层显示。如果某个场景不需要背景,直接在脚本里写:
GlobalBackground.visible = false就能临时关闭。
2. 场景继承复用基础场景
如果你的大部分场景结构类似,用继承最方便:
- 新建一个基础场景(比如
BaseScene),在里面做好背景TextureRect的所有设置(大小、层级、拉伸模式)。 - 后续新建场景时,右键选择继承场景,选中
BaseScene作为父场景。子场景会自动继承父场景的背景,你只需要添加当前场景的内容就行。
3. 脚本动态生成背景
用代码自动创建背景,适合需要灵活调整的场景:
- 写一个简单的脚本(比如
BackgroundLoader.gd):
extends Node2D func _ready(): # 创建TextureRect节点 var bg_rect = TextureRect.new() # 加载背景图(替换成你的图片路径) bg_rect.texture = load("res://assets/backgrounds/main_bg.png") # 设置全屏锚点 bg_rect.anchor_left = 0 bg_rect.anchor_top = 0 bg_rect.anchor_right = 1 bg_rect.anchor_bottom = 1 # 设置拉伸模式 bg_rect.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_COVER # 添加到当前场景并移到最底层 add_child(bg_rect) bg_rect.move_to_bottom()
- 把这个脚本设为自动加载(项目设置→自动加载),或者挂在每个场景的根节点上,运行时就会自动生成背景。
内容的提问来源于stack exchange,提问作者CrazyPizz4
相关产品推荐
相关产品推荐

