BGMとSEのボリュームコントロールを作ってみたのですが、思ったような動作をしなかったため質問をさせていただきます。
スクリプトに関してはChatGPTに書いてもらい、少しだけ自分の方で手直ししています。
HSliderを用意して、以下のスクリプトを用意しました。
(BGM版)
extends HSlider
func _on_ready() → void:
var config := ConfigFile.new()
config.load(“user://settings.cfg”)
var bgm_v: float = config.get_value("audio", "bgm_volume", 1.0)
self.value = bgm_v
var bus := AudioServer.get_bus_index("BGM")
AudioServer.set_bus_volume_db(bus, linear_to_db(bgm_v))
func _on_value_changed(new_value: float) → void:
var bus := AudioServer.get_bus_index(“BGM”)
AudioServer.set_bus_volume_db(bus, linear_to_db(new_value))
var config := ConfigFile.new()
config.load("user://settings.cfg")
config.set_value("audio", "bgm_volume", new_value)
config.save("user://settings.cfg")
動作はしたのですが、ゲームを新しく起動した際に前回のボリュームコントロールの内容が反映されてしまいます。ゲームを続きからはじめた場合はこれで問題はないのかもしれませんが、新規で始める際に反映されないようにするにはどうしたらいいでしょうか?