如何在Godot中实现控件重叠?为进度条添加自定义文本
在Godot中实现进度条叠加自定义文本的方案
方法1:用Control容器实现重叠(替代XAML Grid)
- 创建
Control节点作为父容器(建议命名为ProgressWithLabel) - 将
ProgressBar和Label设为该Control的子节点 - 对两个子节点分别设置布局属性:
- 选中
ProgressBar,在Inspector里设置:Anchor Left/Anchor Right= 0/1,Anchor Top/Anchor Bottom= 0/1Margin Left/Right/Top/Bottom全部设为0,让它填满父容器
- 选中
Label,重复上述锚点与Margin设置,使其同样填满父容器
- 选中
- 调整Label显示效果:修改
Theme Overrides/Font Color确保文本可见,设置Horizontal Alignment和Vertical Alignment为CENTER,让文本居中覆盖在进度条上
方法2:结合VBoxContainer实现整体布局
如果需要把带文本的进度条和其他控件垂直排列:
- 创建
VBoxContainer作为整体布局容器 - 将上述
ProgressWithLabel节点添加到VBoxContainer中 - 可给
ProgressWithLabel设置Custom Minimum Size来固定或限制其高度,避免被其他控件挤压
方法3:封装为自定义控件(提升复用性)
如果需要多次使用该组件:
- 基于方法1的结构创建独立场景,根节点为Control
- 给根节点添加脚本,实现进度与文本的统一更新:
extends Control @onready var progress_bar = $ProgressBar @onready var label = $Label func set_progress(value: float, text: String) -> void: progress_bar.value = value label.text = text
- 后续直接将该场景拖入项目布局即可重复使用
内容的提问来源于stack exchange,提问作者Blindy
相关产品推荐
相关产品推荐

