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。
