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)
みたいな感じ。
コメント