Звуковые эффекты

Последнее обновление: 14.11.2015

Еще один способ введения аудио в приложение представляют звуковые эффекты, которые представлены классом SoundEffect из пространства имен Microsoft.Xna.Framework.Audio.

Первым делом добавим нужный аудиофайл в проект:

SoundEffect in Monogame

Здесь также можно добавить mp3-файл, однако надо учитывать, что для mp3-файла по умолчанию в опции Processor устанавливается значение Song - MonoGame, что позволяет воспроизводить файл как объект Song с помощью MediaPlayer (как было рассмотрено в прошлой теме). Однако поскольку в данном случае мы будем работать с этим файлом как со звуковым эффектам, то нам надо поменять значение этой опции на Sound Effect - MonoGame.

Теперь, допустим, пускай по нажатию клавиши S будет проигрываться добавленный звук:

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Audio;

namespace SoundGame
{
    public class Game1 : Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        SoundEffect soundEffect;
        
        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        protected override void Initialize()
        {
            base.Initialize();
        }
        
        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
            soundEffect = Content.Load<SoundEffect>("vzryv");
        }
        
        protected override void UnloadContent()
        {
        }

        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
                Exit();

            if (Keyboard.GetState().IsKeyDown(Keys.S))
                soundEffect.Play();
            
            base.Update(gameTime);
        }

        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            
            base.Draw(gameTime);
        }
    }
}

Ключевым методом объекта SoundEffect является метод Play(), который позволяет воспроизвести файл. Однако кроме объекта SoundEffect можно использовать и производный объект SoundEffectInstance:

if (Keyboard.GetState().IsKeyDown(Keys.S))
{
    SoundEffectInstance soundEffectInstance = soundEffect.CreateInstance();
    soundEffectInstance.IsLooped = true;
    soundEffectInstance.Play();
}

SoundEffectInstance дает больший контроль над воспроизведением аудио. Свойство IsLooped позволяет задать повторение мелодии после ее окончания. А свойство Volume позволяет установить звук с помощью величины из диапазона от 0.0f до 1.0f.

Методы Play() (начать воспроизведение), Stop() (остановить воспроизведение), Pause (приостановить), Resume() (возобновить воспроизведение) позволяют управлять проигрыванием звукового файла.

При этом мы можем использовать множество различных звуков в приложении. И если мы вдруг захотим задать для всех звуков одну и ту же громкость, то можем использовать статическое свойство MasterVolume класса SondEffect:

SoundEffect.MasterVolume=0.5f;

Данное свойство принимает значение типа float от 0.0f до 1.0f.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850