Godot4でtresファイルを読み込んで別バージョンを作って使いたい!
概要
今回の記事では、Godot4でtresファイルを読み込んで別バージョンを作って使う手順を掲載する。
仕様書
環境
- Gogot 4.1.1
手順書
例えばLabelSettings
のtresファイルを読み込んで別々のLabel
でフォントサイズを変えて表示したい場合、下記のようにしちゃうとlabel1
とlabel2
は両方ともフォントサイズが64
になる。
func _init():
var tres = preload("res://label_settings_pixelfont_16px.tres")
self.label1.font_setting = tres
self.label1.font_setting.font_size = 32
self.label2.font_setting = tres
self.label2.font_setting.font_size = 64
self.label1.font_setting = tres
の代入はいわゆるディープコピーではなく参照渡しなので、label1
とlabel2
は同じLabelSettings
を使用してる状態。なので、この別々のLabelSettings
のfont_size
を設定してるつもりでも実際は同じLabelSettings
のfont_size
を設定してる。
読み込んだtresファイルを基にしたLabelSettings
でlabel1
とlabel2
で異なるフォントサイズで表示したい場合は下記のような感じになる。
func _init():
var tres = preload("res:///label_settings_pixelfont_16px.tres")
self.label1.font_setting = tres.duplicate()
self.label1.font_setting.font_size = 32
self.label2.font_setting = tres.duplicate()
self.label2.font_setting.font_size = 64
duplicate
関数でインスタンスを複製することで別々のLabelSettings
になる感じ。
こうするとlabel1
とlabel2
はそれぞれ別々のfont_size
で表示されるようになる。
まとめ(感想文)
new
やinstantiate
だと思ったらduplicate
。