43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
using Godot;
|
|
|
|
public partial class MusicManager : Node {
|
|
private AudioStreamPlayer _player;
|
|
private Node _lastScene;
|
|
private AudioStream _menuMusic;
|
|
|
|
public override void _Ready() {
|
|
_player = new AudioStreamPlayer();
|
|
AddChild(_player);
|
|
|
|
_menuMusic = GD.Load<AudioStream>("res://Audio/Music/Menu.mp3");
|
|
|
|
_player.Stream = _menuMusic;
|
|
_player.Play();
|
|
|
|
_lastScene = GetTree().CurrentScene;
|
|
}
|
|
|
|
public override void _Process(double delta) {
|
|
Node currentScene = GetTree().CurrentScene;
|
|
|
|
if (currentScene != _lastScene) {
|
|
OnSceneChanged(currentScene);
|
|
_lastScene = currentScene;
|
|
}
|
|
}
|
|
|
|
private void OnSceneChanged(Node newScene) {
|
|
if (_player == null) return;
|
|
if (newScene == null) return;
|
|
|
|
if (newScene.Name == "Game") {
|
|
if (_player.Playing)
|
|
_player.Stop();
|
|
} else {
|
|
if (_player.Stream != _menuMusic || !_player.Playing) {
|
|
_player.Stream = _menuMusic;
|
|
_player.Play();
|
|
}
|
|
}
|
|
}
|
|
} |