You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:35:06