ニュース速報XNA360

プログラミングガイド How to: 音声の再生

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集
ここでは、オーディオエンジンを初期化し、サウンドとウェーブバンクを読み込み、Cueオブジェクトを介して音声を再生する方法を説明します。

ノート:
この作例では、すでにXACTプロジェクト(.xapファイル)が作成してあるものとします。その方法を知りたいなら、How to: Add a Sound File to Your Game Using XACT?を参照してください。


音声を再生する方法

To play a sound
1. 保存してあるXACTプロジェクトファイル(.xap)ファイルを、XNA ゲームプロジェクトのディレクトリに移動します。(How to: Add a Sound File to Your Game Using XACT?を参照してください)。

2. .xapファイルが参照しているWAVEファイルをXNAゲームプロジェクトのディレクトリに追加します。

3. ソリューションエクスプローラ上のプロジェクトのアイコンを右クリックします。

4.「Add」(「追加」かも)を選択し、次に「既存のアイテム」を選択します。

5. プロジェクトのディレクトリから、.xapファイルを選択します。.xapファイルがプロジェクトに追加されるはずです。デフォルトでは、それはコンテントパイプラインによって処理され、ゲームをビルドするときに自動的にウェーブバンクとサウンドバンクもビルドされます。

6. ゲームのコードを編集します。ゲームが始まったときに新しいAudioEngineオブジェクトを作成します。その際にコンストラクタの引数にXACTプロジェクトが出力したXACTグローバルセッティングファイルのファイル名を指定します。拡張子 .xgs を付けるのを忘れないでください。

7. XACTプロジェクト内の全てのウェーブバンクに対してWaveBankオブジェクトを作成します。コンストラクタにはAudioEngineとXACTプロジェクトが出力したXACTウェーブバンクのファイル名を渡してください。拡張子 .xwb を付けるのを忘れないでください。

8. XACTプロジェクト内の全てのサウンドバンクに対してSoundBankオブジェクトを作成します。コンストラクタにはAudioEngineとXACTプロジェクトが出力したXACTサウンドバンクのファイル名を渡してください。拡張子 .xsb を付けるのを忘れないでください。

9. オーディオエンジンがオーディオデータを処理するために、ゲームがUpdateされている間にAudioEngineのUpdateメソッドを実行してください。

10. SoundBankオブジェクトのPlayCueメソッドを実行します。引数に再生したいキューを指定します。

#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
#endregion

public class Game1 : Microsoft.Xna.Framework.Game
{
    GraphicsDeviceManager graphics;
    ContentManager content;

    //オーディオAPIのコンポーネント
    AudioEngine audioEngine;
    WaveBank waveBank;
    SoundBank soundBank;

    public Game1()
    {
        graphics = new GraphicsDeviceManager(this);
        content = new ContentManager(Services);
    }

    protected override void Initialize()
    {
        audioEngine = new AudioEngine("TestSounds.xgs");
        waveBank = new WaveBank(audioEngine, "TestWaveBank.xwb");
        soundBank = new SoundBank(audioEngine, "TestSoundBank.xsb");

        soundBank.PlayCue("kaboom");

        base.Initialize();
    }

    protected override void LoadGraphicsContent(bool loadAllContent)
    {
        if (loadAllContent)
        {

        }

    }

    protected override void UnloadGraphicsContent(bool unloadAllContent)
    {
        if (unloadAllContent == true)
        {
            content.Unload();
        }
    }

    protected override void Update(GameTime gameTime)
    {
        // Allows the default game to exit on Xbox 360 and Windows
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();

        audioEngine.Update();

        base.Update(gameTime);
    }

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

        base.Draw(gameTime);
    }
}


Remarks:
再生されているCueインスタンスは、名前が同じであっても違うものです。ですから同じキューを同時に複数鳴らすことができますよ。

タグ:

+ タグ編集
  • タグ:
ウィキ募集バナー