// SEを再生するstaticメソッド
public static void Play_SE(AudioStream SESound, Node parentNode)
{
if (SESound != null && parentNode != null)
{
var player = new AudioStreamPlayer
{
Stream = SESound,
Bus = "SFX"
};
parentNode.AddChild(player);
player.Play();
// 再生終了後に削除(オプション)
player.Finished += () => player.QueueFree();
}
}
このコードをstaticクラスに書いておけばどこからでも音を鳴らすことができる。
引数には[Export]などで音楽ファイルを読み込ませておいたものを引数に入れる。
2つ目の引数は、thisにしたらい。
[Export] public AudioStream SESound { get; set; } // SEファイルへの参照
//音を鳴らす
XXStaticClass.Play_SE(SESound,this);
こんな感じ。
他にも便利なやり方はいくらでもあるだろうけど、小規模なゲームなら十分だ。