Godot FileDialog无法访问其它盘符的文件

news/2024/5/18 14:27:19 标签: godot, 游戏引擎, 游戏程序

问题描述

使用Godot的FileDialog对象访问Windows系统的文件,例如:

func _on_hud_sig_save():
	$FileDlg.set_file_mode(FileDialog.FILE_MODE_SAVE_FILE)
	$FileDlg.popup_centered_ratio(0.33)
	await $FileDlg.file_selected
	var filename = $FileDlg.get_current_path()
	if not filename.is_empty():
		var file = FileAccess.open(filename, FileAccess.WRITE)
		if file:
			...

如果用户选择了同起始目录(res://或usr://)不在同一个盘上的文件,则$FileDlg.get_current_path()返回的文件路径不包含盘符,导致无法访问文件,结果变量file的值为null。

解决方法

找到了Godot issue: The FileDialog could not get the path to the file correctly,它提供了在Godot 3.x版本中绕过错误的方法:

	var filename = yield(dialog, "file_selected")

由于Godot 4.x版本弃用yield关键字,要改用await,因此调整如下:

	var filename = await $FileDlg.file_selected
	if not filename.is_empty():
		var file = FileAccess.open(filename, FileAccess.WRITE)
		if file:
			...

用户再选择其它盘符的文件时,filename会返回带盘符的完整路径,测试通过!


http://www.niftyadmin.cn/n/5327246.html

相关文章

6个提升Python编程能力的PyCharm插件

大家好,PyCharm作为一款强大的集成开发环境,本身已经提供了许多功能,但一些插件将进一步扩展和增强PyCharm的能力。通过使用这些插件,大家能够更快速地编写代码、提高代码质量、进行调试和优化,并将开发体验提升到一个…

你读过哪些令你有跪感的书?

推荐知友们去看看这本书《绝密人性天书》,绝对是本好书,教你如何洞察人性。 原文地址(建议及时保存,估计过几天就会被河蟹了): https://pan.quark.cn/s/6d80d65761a1 备用链接:https://pan.xunlei.com/s/…

含PEMFC的热电联供系统能量管理策略Simulink仿真

1.光伏发电系统 在直流微电网中,光伏电池系统经过升压DC/DC变换器接入直流微电网提供功率。在不同的系统运行条件下,光伏电池系统有三种工作模式:MPPT 模式、下垂模式和空闲模式。由于光伏阵列的输出特性随着环境条件影响,光伏电池…

Java面试汇总——redis篇

1、什么是缓存穿透 ? 怎么解决 ? 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存就形同虚设(只有数据库查到了,才会让redis缓存,但现在的问题是查不到),会频繁的去访问数据库。 解决…

豆包ai介绍

豆包是字节跳动基于云雀模型开发的AI工具,具有强大的语言处理能力和广泛的应用场景,无论是在学习、工作、生活中,都能派上用场。 豆包可以帮助打工人和创作者提升效率,完成各种工作任务,又能扮演各类AI角色进行高情商…

RDMA编程实践-SEND-RECEICVE原语应用

RDMA编程实践 本文描述了RDMA编程过程中的SEND-RECEIVE双边原语的代码实现。包含多个版本,1、client向server发送消息,server回复client收到消息(ACK),然后两边断开连接。2、server端循环等待客户端建立连接,client发送一次消息后…

明明的随机数【C语言】

【华为机试题 HJ3】明明的随机数 描述输入描述:示例1参考代码1参考代码2描述 明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。 数据范围: 1≤ n ≤1000 ,输入…

【工作】靠谱做事,把事情做闭环

文章目录 1、什么是工作靠谱2、如何成为一个靠谱的人?3、把事情做闭环4、永不说NO5、主动管理 1、什么是工作靠谱 工作靠谱通常指一个人在工作中表现出的可靠性和稳定性。这包括但不限于以下几个方面: 执行力强:能够按时完成工作任务&#x…