俺に解るように説明する "Godot Engine 3.x" 入門+

ゲームエンジン Godot Engine に関すること。入門とか使い方とかチュートリアルとか、あれとかこれとか。日本語解説。

Alicia in Godot Land #09.1「外部ファイルを扱うぞ! 2/2(今日はPNG)」

f:id:ore2wakaru:20190904010550p:plain

前回は外部ファイルとしてテキストファイルCSV)を扱ったので、今回は画像ファイルPNG)を扱うぜ。まーどっちもファイルなので、Fileクラスを利用すんのは共通なんだけど、Godotで外部の画像ファイルを利用するにはさらに2つクラスが必要だ。それが、ImageTextureImageクラスだ。あんまし多くの場面で使う事はないだろうけど、覚えておくとイイことあるかも?


外部画像ファイルの扱い方

俺は_ready()関数の中に書いてるけど、応用する時は必要な所に置けばいいからな。

f:id:ore2wakaru:20190904001005p:plain

・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が扱える画像データに変換。

ここまでで結局、

  1. 生画像データの入れ物用意
  2. 生画像データ入れる
  3. Godot用画像データの入れ物用意
  4. 生画像データからGodot用画像データを作成して入れる

ってことをやってるのが分かるよな。

・L11 最後に、UIのボタン"Button_ENG"(下図)に作り出した画像をセットすれば終わりだ。

f:id:ore2wakaru:20190904005139p:plain

: デフォルトの画像は、アメリカ国旗で最初からセットしている。だから、"user://"にユーザーが画像を追加しなかったら、これを使い、追加したら追加した画像を使うようになってる。

: L11get_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プロパティにセット