Alicia in Godot Land #09.1「外部ファイルを扱うぞ! 2/2(今日はPNG)」
前回は外部ファイルとしてテキストファイル(CSV)を扱ったので、今回は画像ファイル(PNG)を扱うぜ。まーどっちもファイルなので、File
クラスを利用すんのは共通なんだけど、Godotで外部の画像ファイルを利用するにはさらに2つクラスが必要だ。それが、ImageTexture
とImage
クラスだ。あんまし多くの場面で使う事はないだろうけど、覚えておくとイイことあるかも?
外部画像ファイルの扱い方
俺は_ready()
関数の中に書いてるけど、応用する時は必要な所に置けばいいからな。
・L5 前と一緒。テキストだろうと画像だろうと、ファイルを扱うにはFile
クラスでnew()
した変数が必要。
・L6 file_exists()
はカッコ内で指定したファイルが存在するか教えてくれる。在ればtrue、無ければfalse。 "user://"の場所も大丈夫だよな。前回の記事見てくれな。ここに、"ENG.png"って名のファイルが在れば次行く。無ければ終わり。だから、動画でPNGファイルを入れた後ファイル名を書き換えてたわけ。
・L7 今度はImageTexture
クラスのnew()
だ。(多分・・・)これはGodotは素の画像を扱ってるんじゃなくて内部でなんらかの変換をして使ってる(・・・適当)から、画像をGodotが扱えるように、Godot用画像データの入れ物(箱)を用意したって事。
・L8 Image
クラスのnew()
。こっちのはあれだ、素の(ナマの)画像データを入れるための入れ物だ。
・L9 で、まず生画像データを入れる。ファイルがある事はもう確認できてるかなら。load()
関数を使えば、こんな風に外部データもリソースとして持って来れる。
・L10 create_from_image()
関数で生画像データから、Godotが扱える画像データに変換。
ここまでで結局、
- 生画像データの入れ物用意
- 生画像データ入れる
- Godot用画像データの入れ物用意
- 生画像データからGodot用画像データを作成して入れる
ってことをやってるのが分かるよな。
・L11 最後に、UIのボタン"Button_ENG"(下図❶)に作り出した画像をセットすれば終わりだ。
❷: デフォルトの画像は、アメリカ国旗で最初からセットしている。だから、"user://"にユーザーが画像を追加しなかったら、これを使い、追加したら追加した画像を使うようになってる。
❸: L11のget_node()
のおしりに付いてる"icon"プロパティはココのことな。入れられるのはGodotが扱える形にした画像。追加画像があった場合は、ここを置き換えてるワケだよ。
どうだ、簡単だったろ? じゃ、またな。
コピ
func _ready(): var file = File.new() #ファイルを扱うぞ if file.file_exists("user://ENG.png"): #ファイルがあるか? var imgTex = ImageTexture.new() #Godotが扱える画像入れ var img = Image.new() #外部のナマ画像入れ img.load("user://ENG.png") #ナマ画像をまずゲット(リソースとして imgTex.create_from_image(img) #Godotが扱える型(Type)に get_node("Button_ENG").icon = imgTex #ボタンのiconプロパティにセット
ぺ