آوازیں بجانے کی آوازیں

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

خلاصہ

ایکس اے سی ٹی میں بنائی گئی ایک صوتی فائل درآمد کرتا ہے اور چلاتا ہے۔

آپریٹنگ ماحول

ضروری شرائط

XNA ورژن کی حمایت کی
  • 2.0
  • 3.0
حمایت یافتہ پلیٹ فارم
  • ونڈوز (ایکس پی ایس پی 2 یا اس کے بعد، وسٹا)
  • ایکس بکس 360
Windows Required Vertex Shader Version 1.1
Windows Required پکسل شادer Version 1.1

آپریٹنگ ماحول

پلیٹ فارم

نمونے کے ساتھ کیسے کام کریں

کی بورڈ ایکس باکس 360 کنٹرولر ماؤس پر کام کرتا ہے
آوازیں بجانے کی آوازیں ایک ایک -

مادہ

نوٹ: یہ تجاویز ایکس این اے گیم اسٹوڈیو 2.0 پر مبنی ہیں۔

آواز چلانے کے لئے ، آپ کو "ایکس این اے کے ساتھ آواز چلانے کے لئے فائل بنانا" میں بنائی گئی فائل کو پروجیکٹ میں رجسٹر کرنے کی ضرورت ہے۔


サウンドファイルの登録

مواد کے فولڈر پر دائیں کلک کریں اور شامل کریں - موجودہ آئٹم منتخب کریں۔


xap ファイルを選択

دی. لوڈ کرنے کے لئے "xap" فائل منتخب کریں۔ (نمونے میں "آڈیو ڈاٹ ایکس اے پی")


追加された xap ファイル

xap فائل مواد فولڈر میں شامل کی گئی ہے۔


Wave ファイルを Content フォルダに追加

اگلا ، اس لہر فائل کو منتقل کریں جو آپ نے xap فائل بنانے کے لئے براہ راست مواد فولڈر میں استعمال کی تھی۔ ایک بات ذہن میں رکھنی چاہئے کہ ڈبلیو اے وی فائل کو اسی نسبتی راستے میں رکھا جانا چاہئے جب ایکس اے پی فائل بنائی گئی تھی۔

اس صورت میں ، میں ویو فائل کو براہ راست فولڈر میں منتقل کر رہا ہوں ، لیکن مجھے اسے اپنے پروجیکٹ میں شامل کرنے میں کوئی مسئلہ نہیں ہے۔


بس، آپ جانے کے لئے تیار ہیں. یہاں سے، یہ ایک پروگرام ہوگا.

کھیت

/// <summary>
/// オーディオエンジン
/// </summary>
private AudioEngine audioEngine = null;

/// <summary>
/// WaveBank
/// </summary>
private WaveBank waveBank = null;

/// <summary>
/// SoundBank
/// </summary>
private SoundBank soundBank = null;

آوازوں کو چلانے کے لئے ، تین چیزیں استعمال کریں: "آڈیو انجن"، "ویو بینک"، اور "ساؤنڈ بینک"۔ آپ ممکنہ طور پر ساؤنڈ بینک یا آڈیو انجن استعمال کریں گے ، لیکن آپ کو تینوں مثالیں بنانے کی ضرورت ہوگی۔

ایک مثال بنانا

/// <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();
}

گیم میں آواز سے متعلق مثالیں تخلیق کی جاتی ہیں۔ ابتدائی طریقہ۔ جب آپ ہر کلاس بناتے ہیں تو ، آپ دلیل مقرر کرتے ہیں۔ xgs」「. xwb」「. .xsb" فائلیں ، جو جب آپ پروجیکٹ بناتے ہیں تو ایکس اے پی پروجیکٹ فائل کی بنیاد پر خود بخود بنائی جاتی ہیں۔

آڈیو ، ساؤنڈ بینک ، اور ویو بینک فائلوں کے نام وہی ہونے چاہئیں جو آپ نے XACT میں پروجیکٹ بناتے وقت سیٹ کیے تھے۔ نیز ، چونکہ فائل کا راستہ قابل عمل فائل سے متعلق ہے ، لہذا اس مثال میں "مواد" فولڈر کا راستہ شامل کرنا ضروری ہے۔

AudioEngine ** Constructor

آڈیو آبجیکٹس کو سنبھالنے کے لئے آڈیو انجن کلاس کی ایک مثال بناتا ہے۔

settingsFile ڈوری کنفیگریشن فائل لوڈ کرنے کا راستہ

WaveBank constructor

ویو بینک کلاس کی ایک مثال بناتا ہے جس میں لہر فائلوں کا مجموعہ ہوتا ہے۔

آڈیو انجینئر آڈیو انجن ویو بینک اور آڈیو انجن
nonStreamingWaveBankFilename ڈوری لوڈ کرنے کے لئے ویو بینک فائل کا راستہ

SoundBank constructor

ساؤنڈ بینک کلاس کی ایک مثال بناتا ہے جس میں قطاروں کا مجموعہ ہوتا ہے۔

آڈیو انجینئر آڈیو انجن آڈیو انجن ساؤنڈ بینکس سے رابطہ قائم کرے گا
filename ڈوری ساؤنڈ بینک فائل کو لوڈ کرنے کا راستہ

آوازیں بجانے کی آوازیں

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;
}

آواز چلانے کے لئے ، ساؤنڈ بینک ڈاٹ پلے کیو طریقہ استعمال کریں۔ چلنے والے صوتی ماخذ کو ایکس اے سی ٹی میں سیٹ کردہ "کیو" کے نام سے مخصوص کیا گیا ہے۔

ایک بار بجانے کے بعد ، آواز آخر تک جاری رہے گی۔ اس کے علاوہ ، ایک ہی صوتی ذریعہ کو متعدد بار چلا کر بار بار چلایا جاسکتا ہے۔

نمونے میں ، ہر اے بٹن یا اے کلید کو ایک بار چلانے کے لئے دبایا جاتا ہے۔

SoundBank.PlayCue طریقہ

اشارہ کھیلیں.

نام ڈوری کھیلنے کے لئے قطار کا نام

تمام کوڈز

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);
        }
    }
}