ConfirmationDialog
2026/4/14大约 2 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — ConfirmationDialog
ConfirmationDialog
节点继承关系
继承链:Node → CanvasItem → Control → AcceptDialog → ConfirmationDialog
定义
ConfirmationDialog 继承自 AcceptDialog,多了一个"取消"按钮。就像你退出游戏时弹出的"确定要退出吗?"——有"确定"和"取消"两个按钮,让你做选择。
使用频率:★ 基本用不到(需要确认/取消选择时使用)
节点用途
- 确认/取消的二次确认
- 危险操作的提醒(删除、退出等)
使用场景
- 退出游戏确认
- 删除存档确认
- 覆盖文件确认
常用节点搭配
- 搭配
Button触发弹出
生效必备素材/资源
无需特殊资源。
节点属性与信号
自有属性
| 属性 | 类型 | 默认值 | 继承自 | 说明 |
|---|---|---|---|---|
cancel_button_text | string | "Cancel" | — | 取消按钮的文字 |
继承自 AcceptDialog
| 属性 | 类型 | 默认值 | 继承自 | 说明 |
|---|---|---|---|---|
dialog_text | string | "" | AcceptDialog | 对话框显示的文字 |
dialog_hide_on_ok | bool | true | AcceptDialog | 点击确认后是否自动关闭 |
ok_button_text | string | "OK" | AcceptDialog | 确认按钮的文字 |
信号
| 信号 | 触发时机 | 参数 |
|---|---|---|
confirmed | 用户点击确认按钮时 | 无 |
canceled | 用户点击取消按钮时 | 无 |
常用方法
继承自 AcceptDialog 的所有方法。
代码示例
C
using Godot;
public partial class ExitConfirm : Control
{
private ConfirmationDialog _confirmDialog;
public override void _Ready()
{
var exitBtn = new Button();
exitBtn.Text = "退出游戏";
exitBtn.Pressed += () => _confirmDialog.PopupCentered(new Vector2I(300, 120));
AddChild(exitBtn);
_confirmDialog = new ConfirmationDialog();
_confirmDialog.DialogText = "确定要退出游戏吗?\n未保存的进度将丢失。";
_confirmDialog.OkButtonText = "确定退出";
_confirmDialog.CancelButtonText = "再想想";
_confirmDialog.Confirmed += () =>
{
GD.Print("用户确认退出");
GetTree().Quit();
};
_confirmDialog.Canceled += () =>
{
GD.Print("用户取消了退出");
};
AddChild(_confirmDialog);
}
}GDScript
extends Control
var confirm_dialog: ConfirmationDialog
func _ready():
var exit_btn = Button.new()
exit_btn.text = "退出游戏"
exit_btn.pressed.connect(func(): confirm_dialog.popup_centered(Vector2i(300, 120)))
add_child(exit_btn)
confirm_dialog = ConfirmationDialog.new()
confirm_dialog.dialog_text = "确定要退出游戏吗?\n未保存的进度将丢失。"
confirm_dialog.ok_button_text = "确定退出"
confirm_dialog.cancel_button_text = "再想想"
confirm_dialog.confirmed.connect(func():
print("用户确认退出")
get_tree().quit()
)
confirm_dialog.canceled.connect(func():
print("用户取消了退出")
)
add_child(confirm_dialog)