Odtwarzanie dźwięków
streszczenie
Importuje i odtwarza plik dźwiękowy utworzony w programie XACT.
Środowisko pracy
Warunki wstępne
Obsługiwane wersje XNA |
|
Obsługiwane platformy |
|
Wymagana wersja cieniowania wierzchołków systemu Windows | 1.1 |
Wymagana wersja Pixel Shader w systemie Windows | 1.1 |
Środowisko pracy
podest |
Jak pracować z próbką
Działa klawiaturaKontroler Xbox | 360mysz | ||
---|---|---|---|
Odtwarzanie dźwięków | A | A | - |
substancja
Uwaga: Te wskazówki są oparte na XNA Game Studio 2.0.
Aby odtworzyć dźwięk, należy zarejestrować plik utworzony w "Tworzenie pliku do odtwarzania dźwięku za pomocą XNA" do projektu.
Kliknij prawym przyciskiem myszy folder Zawartość i wybierz polecenie Dodaj - Istniejący element.
Ten. Wybierz plik "xap" do załadowania. ("Audio.xap" w przykładzie)
Plik xap zostanie dodany do folderu Zawartość.
Następnie przenieś plik grupy czynności, który został użyty do utworzenia pliku xap, bezpośrednio do folderu Zawartość. Jedną rzeczą, o której należy pamiętać, jest to, że plik WAV musi być umieszczony w tej samej ścieżce względnej, w której został utworzony plik XAP.
W tym przypadku przenoszę plik wave bezpośrednio do folderu, ale nie mam problemu z dodaniem go do mojego projektu.
To wszystko, jesteś gotowy do pracy. Od tego momentu będzie to program.
pole
<summary>
オーディオエンジン
</summary>
private AudioEngine audioEngine = null;
<summary>
WaveBank
</summary>
private WaveBank waveBank = null;
<summary>
SoundBank
</summary>
private SoundBank soundBank = null;
Aby odtwarzać dźwięki, użyj trzech rzeczy: "AudioEngine", "WaveBank" i "SoundBank". Najprawdopodobniej będziesz używać SoundBanks lub AudioEngines, ale będziesz musiał utworzyć wszystkie trzy instancje.
Tworzenie instancji
<summary>
ゲームが始まる前の初期化処理を行うメソッド
グラフィック以外のデータの読み込み、コンポーネントの初期化を行う
</summary>
protected override void Initialize()
{
// オーディオデータの読み込み
this.audioEngine = new AudioEngine(@"Content\Audio.xgs");
this.waveBank = new WaveBank(this.audioEngine, @"Content\Wave Bank.xwb");
this.soundBank = new SoundBank(this.audioEngine, @"Content\Sound Bank.xsb");
// コンポーネントの初期化などを行います
base.Initialize();
}
Instancje związane z dźwiękiem są tworzone w metodzie Game.Initialize. Podczas tworzenia każdej klasy należy ustawić argument na . xgs」「. xwb」「. .xsb", które są tworzone automatycznie na podstawie pliku projektu xap podczas kompilowania projektu.
Nazwy plików audio, banku dźwięków i banku fal muszą być takie same, jak nazwy ustawione podczas tworzenia projektu w programie XACT. Ponadto, ponieważ ścieżka pliku jest względna w stosunku do pliku wykonywalnego, konieczne jest uwzględnienie ścieżki do folderu "Zawartość" w tym przykładzie.
AudioEngine
**Konstruktor
Tworzy instancję klasy AudioEngine do obsługi obiektów audio.
settingsFile (plik) ustawień | struna | Ścieżka do pliku konfiguracyjnego do załadowania |
WaveBank
konstruktor
Tworzy instancję klasy WaveBank, która zawiera kolekcję plików grupy czynności.
Silnik audio | Silnik audio | WaveBank i AudioEngine |
nonStreamingWaveBankFilename (nazwa_pliku) | struna | Ścieżka do pliku WaveBank do załadowania |
SoundBank
konstruktor
Tworzy instancję klasy SoundBank, która zawiera kolekcję kolejek.
Silnik audio | Silnik audio | AudioEngine do łączenia się z bankami dźwięków |
Pod nazwą | struna | Ścieżka do pliku SoundBank do załadowania |
Odtwarzanie dźwięków
if (keyState.IsKeyDown(Keys.A) || padState.Buttons.A == ButtonState.Pressed)
{
if (this.pressed == false)
{
// サウンドを再生
this.soundBank.PlayCue("Sample");
this.pressed = true;
}
}
else
{
this.pressed = false;
}
Aby odtworzyć dźwięk, użyj metody SoundBank.PlayCue. Źródło dźwięku, które ma być odtwarzane, jest określone przez nazwę zestawu "Cue" w XACT.
Po odtworzeniu dźwięk będzie płynął aż do końca. Ponadto to samo źródło dźwięku może być odtwarzane w kółko, odtwarzając je wiele razy.
W próbce każdy przycisk A lub A jest wciśnięty w celu odtworzenia raz.
SoundBank.PlayCue
metoda
Zagraj cue.
nazwa | struna | Nazwa kolejki do gry |
Wszystkie kody
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
namespace PlaySound
{
<summary>
ゲームメインクラス
</summary>
public class GameMain : Microsoft.Xna.Framework.Game
{
<summary>
グラフィックデバイス管理クラス
</summary>
private GraphicsDeviceManager graphics = null;
<summary>
スプライトのバッチ化クラス
</summary>
private SpriteBatch spriteBatch = null;
<summary>
オーディオエンジン
</summary>
private AudioEngine audioEngine = null;
<summary>
WaveBank
</summary>
private WaveBank waveBank = null;
<summary>
SoundBank
</summary>
private SoundBank soundBank = null;
<summary>
キープレスフラグ
</summary>
private bool pressed = false;
<summary>
GameMain コンストラクタ
</summary>
public GameMain()
{
// グラフィックデバイス管理クラスの作成
this.graphics = new GraphicsDeviceManager(this);
// ゲームコンテンツのルートディレクトリを設定
this.Content.RootDirectory = "Content";
}
<summary>
ゲームが始まる前の初期化処理を行うメソッド
グラフィック以外のデータの読み込み、コンポーネントの初期化を行う
</summary>
protected override void Initialize()
{
// オーディオデータの読み込み
this.audioEngine = new AudioEngine(@"Content\Audio.xgs");
this.waveBank = new WaveBank(this.audioEngine, @"Content\Wave Bank.xwb");
this.soundBank = new SoundBank(this.audioEngine, @"Content\Sound Bank.xsb");
// コンポーネントの初期化などを行います
base.Initialize();
}
<summary>
ゲームが始まるときに一回だけ呼ばれ
すべてのゲームコンテンツを読み込みます
</summary>
protected override void LoadContent()
{
// テクスチャーを描画するためのスプライトバッチクラスを作成します
this.spriteBatch = new SpriteBatch(this.GraphicsDevice);
// TODO: this.Content を使用してゲームコンテンツを読み込む
// ロジックを書いてください
}
<summary>
ゲームが終了するときに一回だけ呼ばれ
すべてのゲームコンテンツをアンロードします
</summary>
protected override void UnloadContent()
{
// TODO: ContentManager で管理されていないコンテンツを
// ここでアンロードしてください
}
<summary>
描画以外のデータ更新等の処理を行うメソッド
主に入力処理、衝突判定などの物理計算、オーディオの再生など
</summary>
<param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
protected override void Update(GameTime gameTime)
{
// キーボードの情報取得
KeyboardState keyState = Keyboard.GetState();
// ゲームパッドの情報取得
GamePadState padState = GamePad.GetState(PlayerIndex.One);
// Xbox360 コントローラの BACK ボタンを押したときにゲームを終了させます
if (padState.Buttons.Back == ButtonState.Pressed)
{
this.Exit();
}
if (keyState.IsKeyDown(Keys.A) || padState.Buttons.A == ButtonState.Pressed)
{
if (this.pressed == false)
{
// サウンドを再生
this.soundBank.PlayCue("Sample");
this.pressed = true;
}
}
else
{
this.pressed = false;
}
// 登録された GameComponent を更新する
base.Update(gameTime);
}
<summary>
描画処理を行うメソッド
</summary>
<param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
protected override void Draw(GameTime gameTime)
{
// 画面を指定した色でクリアします
this.GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: ここに描画処理を記述します
// 登録された DrawableGameComponent を描画する
base.Draw(gameTime);
}
}
}