You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:33:20