Godot笔记:HTTP下载文件(png图片)并在Sprite上显示(方案1)

问题描述:

使用HTTPRequest下载一个URL指向的文件(png图片)并不复杂,但当我想在request_completed信号的回调函数中立即使用下载的内容时,却遇到了困难,之前有问题的代码如下:

extends Node2D
func _ready():
    $HTTPRequest.download_file = "DLC/baidu.png"#指定保存的文件名,同时可以指定保存的目录
    $HTTPRequest.request('https://www.baidu.com/img/bd_logo1.png')

func _on_HTTPRequest_request_completed(result, response_code, headers, body):
    $Sprite.texture = load("res://DLC/baidu.png") #这里会报错,无法读取该资源

感谢godotQQ群:691534145的各位大佬提供的帮助,以下代码QQ群友MowⅡ网友提供的,再次感谢。

extends Node2D

func _ready():
    if ResourceLoader.exists('res://Development/DLC/baidu.png'):
        $Sprite.texture = ResourceLoader.load('res://Development/DLC/baidu.png')
    else:
        $HTTPRequest.request('https://www.baidu.com/img/bd_logo1.png')

func _on_HTTPRequest_request_completed(result, response_code, headers, body):
    if response_code == 200:
        var img = Image.new()
        if img.load_png_from_buffer(body) == 0:
            img.save_png('res://Development/DLC/baidu.png')
            var texture = ImageTexture.new()
            texture.create_from_image(img)
            $Sprite.texture = texture

不过我总感觉HTTPRequest类提供的download_file这个接口应该有对于这个场景更好的解决办法。改天继续寻找答案

你可能感兴趣的:(Godot笔记:HTTP下载文件(png图片)并在Sprite上显示(方案1))