Memutar Suara
ringkasan
Mengimpor dan memutar file suara yang dibuat di XACT.
Lingkungan operasi
Prasyarat
Versi XNA yang Didukung |
|
Platform yang Didukung |
|
Versi Vertex Shader yang Diperlukan Windows | 1.1 |
Versi Pixel Shader yang Diperlukan Windows | 1.1 |
Lingkungan operasi
balei-balei |
Cara bekerja dengan sampel
Berfungsi keyboardXbox | 360 controllermouse | ||
---|---|---|---|
Memutar Suara | Sebuah | Sebuah | - |
zat
Catatan: Tips ini didasarkan pada XNA Game Studio 2.0.
Untuk memutar suara, Anda perlu mendaftarkan file yang dibuat di "Membuat file untuk memutar suara dengan XNA" ke proyek.
Klik kanan folder Konten dan pilih Tambahkan - Item yang Ada.
Si. Pilih file "xap" untuk dimuat. ("Audio.xap" dalam sampel)
File xap ditambahkan ke folder Konten.
Selanjutnya, pindahkan file gelombang yang Anda gunakan untuk membuat file xap langsung ke folder Konten. Satu hal yang perlu diingat adalah bahwa file WAV harus ditempatkan di jalur relatif yang sama seperti saat file XAP dibuat.
Dalam hal ini, saya memindahkan file gelombang langsung ke folder, tetapi saya tidak memiliki masalah untuk menambahkannya ke proyek saya.
Itu saja, Anda siap untuk pergi. Mulai sekarang, itu akan menjadi program.
kebun
<summary>
オーディオエンジン
</summary>
private AudioEngine audioEngine = null;
<summary>
WaveBank
</summary>
private WaveBank waveBank = null;
<summary>
SoundBank
</summary>
private SoundBank soundBank = null;
Untuk memutar suara, gunakan tiga hal: "AudioEngine", "WaveBank", dan "SoundBank". Kemungkinan besar Anda akan menggunakan SoundBank atau AudioEngines, tetapi Anda harus membuat ketiga instans tersebut.
Membuat Instans
<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();
}
Instans terkait suara dibuat dalam metode Game.Initialize. Saat membuat setiap kelas, Anda mengatur argumen ke . xgs「. xwb「. .xsb", yang secara otomatis dibuat berdasarkan file proyek XAP saat Anda membangun proyek.
Nama file audio, soundbank, dan wavebank harus sama dengan nama yang Anda tetapkan saat membuat proyek di XACT. Selain itu, karena jalur file relatif terhadap file yang dapat dieksekusi, perlu untuk menyertakan jalur folder "Konten" dalam contoh ini.
AudioEngine
**Pembangun
Membuat instance class AudioEngine untuk menangani objek audio.
pengaturanFile | tali | Jalur file konfigurasi yang akan dimuat |
WaveBank
pembangun
Membuat instans kelas WaveBank yang berisi kumpulan file gelombang.
Mesin audio | Mesin Audio | WaveBank dan AudioEngine |
nonStreamingWaveBankNama File | tali | Jalur ke file WaveBank untuk dimuat |
SoundBank
pembangun
Membuat instance kelas SoundBank yang berisi kumpulan antrean.
Mesin audio | Mesin Audio | AudioEngine untuk terhubung ke SoundBank |
Filename | tali | Jalur ke file SoundBank yang akan dimuat |
Memutar Suara
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;
}
Untuk memutar suara, gunakan metode SoundBank.PlayCue. Sumber suara yang akan diputar ditentukan oleh nama "Cue" yang diatur di XACT.
Setelah diputar, suara akan terus mengalir hingga akhir. Selain itu, sumber suara yang sama dapat diputar berulang kali dengan memutarnya beberapa kali.
Dalam sampel, setiap tombol A atau tombol A ditekan untuk memutar sekali.
SoundBank.PlayCue
Metode
Mainkan isyarat.
Nama | tali | Nama antrian untuk dimainkan |
Semua Kode
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);
}
}
}