[Godot4.3]画像リソースをスクリプトから読み込んだら怒られた

Image.load()はダメらしい

画像リソースをスクリプトから動的に読み込もうとしたら警告がでて、エクスポートしたプロジェクトバイナリからは読み込みができなかった

func load_image_from_resource():
	var img:Image = Image.new()
	img.load("res://image_file.jpg")
	
	var tex:ImageTexture = ImageTexture.create_from_image(img)

このスクリプトだと

Loaded resource as image file, this will not work on export: 'res://image_file.jpg'. Instead, import the image file as an Image resource and load it normally as a resource.

と怒られた。リソースはベイクされているのでインポートて読み込まないとダメらしい。???

解決策

リソースを読み込む関数があった。

func load_image_from_resource():
	var tex:CompressedTexture2D = ResourceLoader.load("res://image_file.jpg", 'Image')

戻ってくるのがCompressedTexture2Dなので気をつけよう。

他のテクスチャなどにしたい場合は

var tex2:ImageTexture = ImageTexture.create_from_image(tex.get_image())

みたいにすればいいっぽい

アドレスがres://~なんだからimg.load()でイイ感じにやってほしくはある。

おまけ

リソースではないファイル(実行時にファイルダイアログとかで開くとか)は怒られたスクリプトでいい。

その場合は静的関数がある。

func load_image_from_file():
	var img:Image = Image.load_from_file(image_file_path)
	
	var tex:ImageTexture = ImageTexture.create_from_image(img)

みたいな感じ。

参考リンク

ResourceLoader

コメント

タイトルとURLをコピーしました