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

Godot运行时从网络导入动画文件的问题求助

从网络加载Godot动画资源并添加至AnimationPlayer的正确流程

先排查解析错误的根源

  • 确认HTTP请求返回的.tres文件内容完整:用File类将下载内容写入本地后,打开文件检查是否与服务器原文件一致,排查是否存在字符缺失、乱码问题。
  • 确保服务器返回原始内容:避免HTTP服务自动转码(如gzip未正确解码),或返回HTML错误页面而非目标.tres文件。

正确的加载流程

步骤1:HTTP下载资源文件

使用HTTPRequest节点处理下载,务必监听下载完成信号:

var http_request = HTTPRequest.new()
add_child(http_request)

func _ready():
    # 请求目标动画文件
    var error = http_request.request("http://your-server.com/animTest.tres")
    if error != OK:
        print("请求失败: ", error)
    # 同步请求动画关联的纹理文件

func _on_http_request_request_completed(result, response_code, headers, body):
    if response_code == 200:
        # 将下载内容写入user://目录
        var file = File.new()
        var write_error = file.open("user://animTest.tres", File.WRITE)
        if write_error == OK:
            file.write_string(body.get_string_from_utf8())
            file.close()
            # 启动资源加载流程
            load_target_animation()
        else:
            print("写入本地文件失败: ", write_error)
    else:
        print("下载失败,状态码: ", response_code)

步骤2:异步加载资源并添加至AnimationPlayer

避免同步加载(可能因文件未完全写入导致解析错误),改用异步加载方式:

func load_target_animation():
    var target_path = "user://animTest.tres"
    # 发起异步加载请求
    ResourceLoader.load_threaded_request(target_path)
    # 等待加载完成
    await ResourceLoader.load_threaded_get_status(target_path) == ResourceLoader.THREAD_LOAD_LOADED
    # 获取加载完成的资源
    var anim_resource = ResourceLoader.load_threaded_get(target_path)
    if anim_resource is Animation:
        # 将动画添加至AnimationPlayer
        $AnimationPlayer.add_animation("test_anim", anim_resource)
        # 可选:直接播放动画
        $AnimationPlayer.play("test_anim")
    else:
        print("加载资源非Animation类型")

步骤3:处理关联纹理的依赖

若.tres文件引用远程纹理,需先将纹理下载至本地,再通过路径映射让Godot正确识别:

# 假设纹理已下载至user://textures/tex1.png
ResourceLoader.add_resource_path("user://")
# 加载动画时会优先从user://路径查找关联资源

常见避坑点

  • 注意HTTP响应编码:转字符串时务必使用UTF-8编码,避免乱码破坏.tres格式。
  • 禁止同步加载未完成的文件:文件未完全写入时调用load()会直接触发解析错误。
  • 确保所有依赖资源就绪:动画关联的纹理必须提前下载至本地可访问路径,否则动画加载会失败。

内容的提问来源于stack exchange,提问作者Yan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:57:10