Консоль Фоновая Музыка

У меня есть C# Консольная игра, над которой я работаю, и я бы очень хотел добавить в нее немного фоновой музыки.

У меня есть функция, которая вызывает SoundPlayer, и она воспроизводит музыку, как и ожидалось. Моя функция будет вызываться при определенных обстоятельствах моей игры, но когда она будет вызвана, я бы хотел, чтобы игра продолжалась. В настоящее время моя игра проходит, как и ожидалось, но как только она достигает playMusic() Функция игры останавливается до тех пор, пока не перестанет играть музыка.

Как заставить музыку играть в фоновом режиме, не прерывая основной игровой цикл? Любые мысли по этому вопросу будут с благодарностью.

Музыкальная функция:

public void playMusic()
    { 
        SoundPlayer sndPlayer = new SoundPlayer();
        sndPlayer.SoundLocation = Environment.CurrentDirectory + "\\Music.Wav";           
        sndPlayer.PlaySync();

    }

Мой игровой цикл:

        int gameoverCount =0;
        //Main game loop
        while (gameoverCount != 1000)
        {
            //Select a random NPC to move
            int randomNPC = StaticRandom.Instance.Next(0, npcs.characters.Count);

            //Checks if the NPC has reached it's destination, if not move. 
            if (npcs.characters[randomNPC].destination)
            {
                Movement.npcMove(board, npcs.characters[randomNPC]);
            }                
            else
            {
                //Gives NPC new location
                npcs.characters[randomNPC].destinationX = StaticRandom.Instance.Next(3, 14);
                npcs.characters[randomNPC].destinationY = StaticRandom.Instance.Next(3, 14);
                npcs.characters[randomNPC].destination = true;
            }
            gameoverCount++;
            Movement.playerMove(p1.coordX, p1.coordY, board, p1, p1.bac, p1.stepsTaken, npcs.characters[randomNPC]);

            //If player is on a certain space, play music
            if (board.board[p1.coordX, p1.coordY].playMusic)
            {
                playMusic();
            }                
            Console.Clear();
            board.showBoard();
        }

1 ответ

Решение

То, что вы ищете, это метод Play или PlayLooping. Как вы можете видеть в разделе замечаний, оба эти метода будут воспроизводить музыку с использованием нового потока. PlaySync, с другой стороны, использует текущий поток, что является причиной, почему вы получаете поведение, которое вы получаете.

Другие вопросы по тегам