概述

Godot内可以通过添加对话框节点的形式来创建和显示对话框。除此而外,Godot自身也提供了一些对话框函数,方便一些简单对话框的显示和使用。

本文小小总结一下Godot4.4版本的对话框函数。

原生系统对话框

OSDisplayServer提供了几个关于系统原生对话框的函数,所以如果你想直接使用系统的对话框,可以绕开对话框节点直接使用。

Godot4.4对话框函数{OS{alert()DisplayServer{dialog_show()dialog_input_text()file_dialog_show()file_dialog_with_options_show() \scriptsize Godot4.4对话框函数 \begin{cases} OS \begin{cases} alert()\\ \end{cases} \\ DisplayServer \begin{cases} dialog\_show()\\ dialog\_input\_text()\\ file\_dialog\_show()\\ file\_dialog\_with\_options\_show()\\ \end{cases} \\ \end{cases} Godot4.4对话框函数 OS{alert()DisplayServer dialog_show()dialog_input_text()file_dialog_show()file_dialog_with_options_show()

提示对话框

OS.alert()

这是一个简单的提示信息对话框,只显示一个确定按钮。并且没有返回值,也不提供回调函数处理按钮的点击。

void alert(
    text: String,              \\ 对话框标题
    title: String = "Alert!"   \\ 提示文字
)

举例

OS.alert("这里是提示文本","提示")
MacOS显示效果 Windows效果

dialog_show()

DisplayServer单例也提供了一个提示对话框函数dialog_show(),不过相比OS.alert(),它提供了自定义多按钮的设计,并且提供回调函数,处理按钮点击,并且会返回一个Error值。

\\ 普通对话框
Error dialog_show(
    title: String,  		     \\ 对话框标题
    description: String, 	     \\ 提示文字
    buttons: PackedStringArray,  \\ 按钮文本
    callback: Callable           \\ 回调函数,处理按钮点击
)

比如:

var err = DisplayServer.dialog_show("标题","这里是描述",["确定","取消"],func(index:int):
    match index:
        0:
            print("你点击了确定")
        1:
            print("你点击了取消")
)
MacOS显示效果 Windows效果

输入对话框

DisplayServer单例dialog_input_text()提供一个输入对话框,可以处理一些简单的文本输入,或者修改名称等逻辑。

Error dialog_input_text(
    title: String,           \\ 对话框标题
    description: String,     \\ 描述文本
    existing_text: String,   \\ 已经存在的输入字符串
    callback: Callable		 \\ 回调函数,处理OK按钮点击
)

举例:

var err = DisplayServer.dialog_input_text("标题","这里是描述","已经存在的文本",func(input:String):
    print(Input)
)
MacOS显示效果 Windows效果

文件对话框

file_dialog_show()

Error file_dialog_show(
    title: String,             	\\ 对话框标题
    current_directory: String,  \\ 当前目录
    filename: String, 			\\ 文件名
    show_hidden: bool, 			\\ 是否显示隐藏文件和文件夹
    mode: FileDialogMode,       \\ 文件对话框模式
    filters: PackedStringArray, \\ 后缀集合,过滤器
    callback: Callable			\\ 回调函数,处理对话框按钮或文件选中后的处理
)

回调函数形式:

func(
    status: bool, 
    selected_paths: PackedStringArray,  \\ 选中文件或文件夹的完整路径数组
    selected_filter_index: int
):

举例:

var err = DisplayServer.file_dialog_show(
		"标题",
        "/Users/xingshimacbookair/Downloads",
        "",
        false,
		DisplayServer.FILE_DIALOG_MODE_OPEN_FILE,
        ["*.gd;脚本文件"],
		func(status: bool, selected_paths: PackedStringArray, selected_filter_index: int):
			print(selected_paths)
)
MacOS显示效果 Windows效果

file_dialog_with_options_show()

貌似是file_dialog_show()的进阶版本,但是Godot内置文档对其所谓选项的具体使用方式没有过多的描述,笔者自己搜索“文件对话框选项”之类的也没有得到有用的信息。

Error file_dialog_with_options_show(
    title: String,              \\ 对话框标题
    current_directory: String,  \\ 当前目录
    root: String,               \\ 
    filename: String, 		    \\ 文件名
    show_hidden: bool,          \\ 是否显示隐藏文件和文件夹
    mode: FileDialogMode,       \\ 文件对话框模式
    filters: PackedStringArray, \\ 后缀集合,过滤器
    options: Array[Dictionary], \\ 
    callback: Callable          \\ 回调函数,处理对话框按钮或文件选中后的处理
)

回调函数:

func(
    status: bool, 
    selected_paths: PackedStringArray, 
    selected_filter_index: int, 
    selected_option: Dictionary
)

options:

单个选项构成如下:

{
    "name"""    \\ 选项的名称(String"values"[], \\ 值数组(PackedStringArray),如果为空,则使用布尔选项(复选框)
    "default":1   \\ 默认选择的选项索引(int)或默认布尔值(bool)
}

options则是由若干上述形式的选项字典构成的数组。

Logo

一站式虚拟内容创作平台,激发创意,赋能创作,进入R空间,遇见同道,让优质作品闪耀发光。​

更多推荐