Godot 4.1 Stable截图功能报错:无法保存JPG文件求助
解决Godot截图保存JPG失败的问题
问题根源
错误路径里的时间字符串包含冒号(比如18:24:09),而Windows系统文件名不允许使用冒号这类特殊字符,这是保存失败的直接原因。另外当前按钮检测逻辑会在按住按键时重复触发截图,也可能引发异常。
修复方案
1. 清理文件名中的非法字符
修改文件名生成逻辑,把时间字符串里的冒号替换成合法字符(如下划线或横杠):
func take_screenshot(): # 替换时间字符串里的非法冒号 var date_str = Time.get_date_string_from_system() var time_str = Time.get_time_string_from_system().replace(":", "_") var screenshot_path = "user://screenshot_" + date_str + "_" + time_str + ".jpg" var image = get_viewport().get_texture().get_image() image.flip_y() # 增加错误反馈方便调试 var save_err = image.save_jpg(screenshot_path) if save_err != OK: print("截图保存失败: ", save_err)
2. 用时间戳生成唯一文件名(更简洁)
直接使用毫秒级时间戳作为文件名后缀,彻底避免特殊字符问题:
func take_screenshot(): var timestamp = Time.get_ticks_msec() var screenshot_path = "user://screenshot_" + str(timestamp) + ".jpg" var image = get_viewport().get_texture().get_image() image.flip_y() image.save_jpg(screenshot_path)
3. 修正按钮触发逻辑
当前_physics_process里用Input.is_action_pressed会在按住按键的每一帧都调用截图,改成is_action_just_pressed确保单次按键只触发一次:
func _physics_process(delta): ... if Input.is_action_just_pressed("TAKE SCREENSHOT"): take_screenshot()
验证方式
修改后运行游戏,按下截图按钮,通过Godot编辑器的FileSystem面板打开user://目录,检查截图是否成功生成。
内容的提问来源于stack exchange,提问作者Geardung
相关产品推荐
相关产品推荐

