BGMの管理
BGMのグローバル変数を作ろう
シーンマネージャーと同じような手法でBGMを管理します。
まず、トップメニューの「シーン」>「新規シーン」で、新しいシーンを作ります。ルートノードは「AudioStreamPlayer」にして名前を「BGM」に変更します。
「Ctrl+S」で保存するパスはres://singleton/bgm.tscn
とします。
「BGM」の「インスペクター」ドックには、次のような変更を加えます。
-
「AudioStreamPlayer」
-
「Stream」に、
res://res/sound/maou_loop_fantasy_07.ogg
をドロップ。 - 「Parameters」>「Looping」と「オン」にチェック。
-
「Stream」に、

次にトップメニューの「プロジェクト」>「プロジェクト設定」を選び、「プロジェクト設定」ダイアログを開きます。そして「グローバル」タブ>「自動読み込み」タブを表示します。
「パス」の横にフォルダーのアイコンがあるのでクリックします。そして、作成したres://singleton/bgm.tscn
を選択して、画面右端の「追加」ボタンを押します。
そうすると、「名前」が「Bgm」、「パス」が「res://singleton/bgm.tscn
」という項目が追加されます。

BGMマネージャーのグローバル変数を作ろう
「ファイルシステム」ドックのres://singleton
フォルダーを右クリックして、「新規作成」>「スクリプト」を選びます。
「スクリプト作成」ダイアログが開きますので、「テンプレート」のチェックボックスを外し、「パス」をres://singleton/bgm_manager.gd
にして「作成」ボタンを押します。
次にトップメニューの「プロジェクト」>「プロジェクト設定」を選び、「プロジェクト設定」ダイアログを開きます。そして「グローバル」タブ>「自動読み込み」タブを表示します。
「パス」の横にフォルダーのアイコンがあるのでクリックします。そして、作成したres://singleton/bgm_manager.gd
を選択して、画面右端の「追加」ボタンを押します。
そうすると、「名前」が「BgmManager」、「パス」が「res://singleton/bgm_manager.gd
」という項目が追加されます。

BGMを管理するスクリプト
bgm_manager.gd
をダブルクリックして「Script」ビューで開きます。bgm_manager.gd
に、次のようにBGM管理をおこなうプログラムを書きます。
extends Node # BGMの開始 func start_bgm() -> void: if Bgm.playing == false: Bgm.play() # BGMをオフ func bgm_off() -> void: var tween = create_tween() tween.tween_property(Bgm, "volume_linear", 0, 0.5) tween.play() # BGMをオン func bgm_on() -> void: var tween = create_tween() tween.tween_property(Bgm, "volume_linear", 1, 0.5) tween.play()
このファイルには3つの関数があります。それぞれ、次の処理をおこないます。
-
start_bgm
関数- BGMが再生中でなければ、BGMを再生する。
-
bgm_off
関数- BGMのフェードアウト。BGMの音量を0.5秒かけて下げる。
-
bgm_on
関数- BGMのフェードイン。BGMの音量を0.5秒かけて戻す。
今回は、BGMの切り替えはおこないません。必要ならば処理を拡張して、BGMの切り替えを実装するとよいでしょう。
次は、このBGM管理の処理を、「Title」と「Maze」シーンに組み込んでいきます。