Button.set_text
2026/4/14大约 3 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — Button.set_text
Button.set_text
定义
Button.set_text 就是给按钮上"写字"——按钮表面显示的那段文字,比如"开始游戏"、"确认"、"取消",就是通过这个方法设置的。
打个比方:Button 就像一个空白标签牌,你用 set_text 在上面写上文字,玩家就能看到按钮上写了什么,然后点击它。
在实际游戏开发中,按钮文字经常需要根据游戏状态动态变化——比如按钮上写着"购买",当金币不够时就变成"金币不足"。
函数签名
C#
// 通过属性设置
public string Text { get; set; }
// 也可以通过构造后赋值
button.Text = "开始游戏";GDScript
func set_text(text: String) -> void
# 也可以直接用属性赋值:
# button.text = "开始游戏"参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
text | String | 是 | 按钮上要显示的文字内容,可以是任意字符串 |
返回值
无返回值(void)。这是一个纯粹的"设置"操作——你告诉按钮该显示什么文字,它照做就行。
代码示例
基础用法:设置按钮文字
C#
// 获取按钮节点并设置文字
var startButton = GetNode<Button>("StartButton");
startButton.Text = "开始游戏";
// 运行结果: 按钮上显示"开始游戏"
var quitButton = GetNode<Button>("QuitButton");
quitButton.Text = "退出";
// 运行结果: 按钮上显示"退出"GDScript
# 获取按钮节点并设置文字
var start_button = $StartButton as Button
start_button.text = "开始游戏"
# 运行结果: 按钮上显示"开始游戏"
var quit_button = $QuitButton as Button
quit_button.text = "退出"
# 运行结果: 按钮上显示"退出"实际场景:根据游戏状态切换按钮文字
C#
using Godot;
public partial class ShopUI : Control
{
private Button _buyButton;
private int _playerGold = 100;
private int _itemPrice = 150;
public override void _Ready()
{
_buyButton = GetNode<Button>("BuyButton");
UpdateBuyButton();
}
private void UpdateBuyButton()
{
if (_playerGold >= _itemPrice)
{
_buyButton.Text = $"购买({_itemPrice}金币)";
}
else
{
_buyButton.Text = "金币不足";
_buyButton.Disabled = true;
}
// 运行结果: 金币不足时按钮显示"金币不足"且不可点击
}
}GDScript
extends Control
@onready var _buy_button: Button = $BuyButton
var _player_gold: int = 100
var _item_price: int = 150
func _ready():
update_buy_button()
func update_buy_button():
if _player_gold >= _item_price:
_buy_button.text = "购买(%d金币)" % _item_price
else:
_buy_button.text = "金币不足"
_buy_button.disabled = true
# 运行结果: 金币不足时按钮显示"金币不足"且不可点击进阶用法:多语言按钮文字切换
C#
using Godot;
using System.Collections.Generic;
public partial class MainMenu : Control
{
private Button _startButton;
private Button _settingsButton;
private Button _quitButton;
private Dictionary<string, Dictionary<string, string>> _translations = new()
{
["zh"] = new() { ["start"] = "开始游戏", ["settings"] = "设置", ["quit"] = "退出" },
["en"] = new() { ["start"] = "Start Game", ["settings"] = "Settings", ["quit"] = "Quit" },
};
private string _currentLang = "zh";
public override void _Ready()
{
_startButton = GetNode<Button>("StartButton");
_settingsButton = GetNode<Button>("SettingsButton");
_quitButton = GetNode<Button>("QuitButton");
ApplyLanguage(_currentLang);
// 运行结果: 按钮显示"开始游戏"、"设置"、"退出"
}
private void ApplyLanguage(string lang)
{
var t = _translations[lang];
_startButton.Text = t["start"];
_settingsButton.Text = t["settings"];
_quitButton.Text = t["quit"];
}
}GDScript
extends Control
@onready var _start_button: Button = $StartButton
@onready var _settings_button: Button = $SettingsButton
@onready var _quit_button: Button = $QuitButton
var _translations := {
"zh": { "start": "开始游戏", "settings": "设置", "quit": "退出" },
"en": { "start": "Start Game", "settings": "Settings", "quit": "Quit" },
}
var _current_lang := "zh"
func _ready():
apply_language(_current_lang)
# 运行结果: 按钮显示"开始游戏"、"设置"、"退出"
func apply_language(lang: String):
var t = _translations[lang]
_start_button.text = t["start"]
_settings_button.text = t["settings"]
_quit_button.text = t["quit"]注意事项
- Button 的 Text 属性和 BaseButton 的 ButtonGroup 无关:Text 只是显示文字,不影响按钮的分组或行为逻辑。
- 文字为空字符串时按钮会缩小:如果不设置文字或设为
"",按钮可能只剩图标大小(如果有图标)或收缩到最小尺寸。 - 支持 BBCode 标签:如果按钮设置了
bbcode_enabled = true(继承自 RichTextLabel 特性),可以使用 BBCode 标签来格式化文字。但普通 Button 默认不支持,需使用 RichTextLabel 自行实现。 - C# 中推荐直接用属性赋值:
button.Text = "xxx"比button.SetText("xxx")更符合 C# 习惯。GDScript 中两者等价。
