Seslerin çalınması
özet
XACT'de oluşturulan bir ses dosyasını içe aktarır ve oynatır.
Çalışma ortamı
Önkoşullar
Desteklenen XNA Sürümleri |
|
Desteklenen Platformlar |
|
Windows Gerekli Köşe Gölgelendiricisi Sürümü | 1.1 |
Windows Gerekli Pixel Shader Sürümü | 1.1 |
Çalışma ortamı
peron |
Örnek ile nasıl çalışılır
Çalışıyor klavyeXbox | 360 denetleyicisifare | ||
---|---|---|---|
Seslerin çalınması | A | A | - |
madde
Not: Bu ipuçları XNA Game Studio 2.0'a dayanmaktadır.
Sesi çalmak için, "XNA ile ses çalmak için bir dosya oluşturma" bölümünde oluşturulan dosyayı projeye kaydetmeniz gerekir.
İçerik klasörüne sağ tıklayın ve Ekle - Varolan Öğe'yi seçin.
Bu . Yüklenecek "xap" dosyasını seçin. (Örnekte "Audio.xap")
xap dosyası Content klasörüne eklenir.
Ardından, xap dosyasını oluşturmak için kullandığınız wave dosyasını doğrudan İçerik klasörüne taşıyın. Akılda tutulması gereken bir şey, WAV dosyasının, XAP dosyasının oluşturulduğu zamanki aynı göreli yola yerleştirilmesi gerektiğidir.
Bu durumda wave dosyasını direkt olarak klasöre taşıyorum ancak projeme eklerken herhangi bir sorun yaşamıyorum.
İşte bu, gitmeye hazırsın. Bundan sonrası bir program olacak.
alan
<summary>
オーディオエンジン
</summary>
private AudioEngine audioEngine = null;
<summary>
WaveBank
</summary>
private WaveBank waveBank = null;
<summary>
SoundBank
</summary>
private SoundBank soundBank = null;
Sesleri çalmak için üç şey kullanın: "AudioEngine", "WaveBank" ve "SoundBank". Büyük olasılıkla SoundBanks veya AudioEngines'i kullanacaksınız, ancak üç örneği de oluşturmanız gerekecek.
Örnek Oluşturma
<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();
}
Sesle ilgili örnekler Game.Initialize yönteminde oluşturulur. Her sınıfı oluşturduğunuzda, bağımsız değişkeni olarak ayarlarsınız. xgs」「. xwb」「. .xsb" dosyaları, projeyi oluşturduğunuzda XAP proje dosyasına dayalı olarak otomatik olarak oluşturulur.
Ses, ses bankası ve dalga bankası dosyalarının adları, projeyi XACT'de oluştururken ayarladığınız adlarla aynı olmalıdır. Ayrıca, dosyanın yolu yürütülebilir dosyaya göre olduğundan, bu örnekte "İçerik" klasörünün yolunu dahil etmek gerekir.
AudioEngine
**Oluşturucu
Ses nesnelerini işlemek için AudioEngine sınıfının bir örneğini oluşturur.
settingsDosya | dizgi | Yüklenecek yapılandırma dosyasının yolu |
WaveBank
Oluşturucu
Wave dosyaları koleksiyonunu içeren WaveBank sınıfının bir örneğini oluşturur.
ses motoru | Ses Motoru | WaveBank ve AudioEngine |
nonStreamingWaveBankDosya adı | dizgi | Yüklenecek WaveBank dosyasının yolu |
SoundBank
Oluşturucu
Kuyruk koleksiyonu içeren SoundBank sınıfının bir örneğini oluşturur.
ses motoru | Ses Motoru | SoundBanks'e bağlanmak için AudioEngine |
Dosyaadı | dizgi | Yüklenecek SoundBank dosyasının yolu |
Seslerin çalınması
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;
}
Bir ses çalmak için SoundBank.PlayCue yöntemini kullanın. Çalınacak ses kaynağı, XACT'de ayarlanan "Cue" adıyla belirtilir.
Bir kez çalındıktan sonra, ses sonuna kadar akmaya devam edecektir. Ek olarak, aynı ses kaynağı birden çok kez çalınarak tekrar tekrar çalınabilir.
Örnekte, oynatmak için her A düğmesine veya A tuşuna bir kez basılır.
SoundBank.PlayCue
yöntem
İşareti oynatın.
ad | dizgi | Oynatılacak kuyruğun adı |
Tüm Kodlar
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);
}
}
}