【Godot】HTTPで画像を取得してテクスチャとして使う
はじめに
ネット上の画像をゲーム内で使いたいみたいな状況があるかもしれません (?)
Unityだと簡単にできるんですが、Godotでは出来るか気になったので実験してみました。
今回はこの3つのクラスを使用します。
手順
ノードを組む
3Dノードを組みます。
四角形メッシュを配置してカメラで向くようにします。 ディレクショナルライトも忘れずに。
次に、UIノードを組みます。
ボタンを押すとシグナルでスクリプトが呼び出されるようにします。
スクリプトを書く
extends Spatial # ueshitaのTwitterアイコンのURL const url = "https://pbs.twimg.com/profile_images/461385142607429632/c6z5xZS3_400x400.png" func _ready(): $HTTPRequest.connect("request_completed", self, "_on_request_completed") func _on_Button_pressed(): $HTTPRequest.request(url) func _on_request_completed(result: int, response_code: int, headers: PoolStringArray, body: PoolByteArray): print("---- HTTP Response ---") print("result: %d" % result) print("response_code: %d" % response_code) print("headers: ", headers) # png画像をイメージにロードする var image = Image.new() image.load_png_from_buffer(body) # イメージからテクスチャを作成する var texture = ImageTexture.new() texture.create_from_image(image) # マテリアルにセットする (今回はSpatialMaterial) var material = $Quad.get_surface_material(0) as SpatialMaterial material.set_texture(SpatialMaterial.TEXTURE_ALBEDO, texture)
ボタンが押されると_on_Button_pressed
が呼ばれ、HTTPリクエストが開始されます。
今回は自分のTwitterアイコンのURLを指定しています。
成功すると_on_request_completed
が呼ばれ、画像ロードからテクスチャの設定が行われます。
実行結果
やったね!
最後に
プロダクトとして作る場合はエラー処理をちゃんと書いたほうがいいですね。