[翻译]XNA 3.0 Game Programming Recipes之fifty

本文介绍如何使用XACT工具加载并播放.wav声音文件。详细步骤包括创建XACT项目、组织音频文件、设置声音和cue等。适用于XNA游戏开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


PS:自己翻译的,转载请著明出处

                                                             7-3 通过XACT播放简单的.wav声音文件
问题
                                  你想加载一个声音效果通过XACT,并且播放它在你的游戏中。
注意:Zune不支持XACT工具;因此,相关内容在7-1节和7-2节去学习如何播放声音在Zune上。
解决方案
                                  通过使用XACT,一个免费的工具,它来自XNA Game Studio3.0,你可以创建一个XACT工程,它包含所有的你准备在游戏中使用的声音文件。你可以使用XACT去可视化的添加/操作效果。你可以导入这个XACT项目到你的XNA工程中,在它可以立即播放声音保存在你的XACT项目中使用一个单一的代码行。
它是如何工作的
                                  首先,确保你打开一个XNA项目并且保存它在你的硬盘上。为了保持这些东西有序,你应该创建一个新的文件夹去保存所有你的声音原料。在XNA项目的解决方案中,找到Content条目,右击它,选择Add-New Folder,并且命名你的文件夹Audio,列如。
                                  现在,打开XACT通过点击Start菜单,然后点击Programs-Microsoft XNA Game Studio3.0-Tools-MicrosoftCross-Platform Audio Creation Tool(XACT)
                                  当你开始XACT,首先的事情你需要去做的是开始一个新的项目通过选择File-New Project.给你的项目一个奇妙的名字,并且浏览到你的XNA的Content\Audio路径保存它。
                                  你将会看到一个空的项目。在左边的树型结构中,找到Wave Banks,它包含waves,它是一个音频文件。右击Wave Banks,并选择New Wave Bank.接下来,创建一个声音bank通过右击Sound Banks并选择New Sound Bank.一个sound bank包含sounds,它是一个对象,他实际上可以在你的XNA项目中播放。一个声音指向一个波形,并且可以随意添加一些波形的效果类型。
                                  你现在可以看见两个长方块在你的窗口右边。点击Wave Bank框体。你应该可以看见它的属性在XACT窗口的底部。找到Name属性,并且改变它从Wave Bank为myWaveBank.接下来,点击Sound Bank框体,并且命名它的Name属性为mySoundBank.这些名字通过它们在你的XNA项目中容易被理解。
                                  你可以使用你的波形bank去保存所有你的.wav文件,所以右击它的框体的某处,并选择Insert WaveFile(s).浏览到.wav文件在你的硬盘中,它是你想在你的游戏中播放的,打开它。你可以看见它已经添加到你的波形bank.它显示为红色,因为你还没有使一个声音在你的声音bank中,它使用波形。
提示:该文件的位置被保存在相对的XACT项目中。这可以导致麻烦如果你改变你的声音或者你的XACT项目的位置,所以你应该首先复制音频文件到Content\Audio路径在导入它们到你的wave bank。
                                  一个波形是一个相关于声音文件在你的硬盘中,不管文件是什么样的格式。一个声音使用一个波形并且允许你去添加一些类型效果到它里面,如处理音量或者pitch。你可以使多个声音来自于一个波形。虽然,程序员使用一个cue去访问这些声音。所以从每个声音中,你需要产生一个cue在你可以从你的XNA代码去访问它时。一个cue可以包含多个声音,所以一个单一的代码行可以播放多个声音。
                                  所以,在你可以从你的游戏中的波形bank播放一个波形之前,你需要去制造一个声音和一个cue,他们用这个波形。你可以通过选择你的波形和拖放它到你的Sound Bank框体的cue地方,如图7-1所显示。
提示:确保你立即拖拉声音到cue表单在Sound Bank框体的底部,不是到声音表单,而在Sound Bank框体的上部。
                                  这波形和声音banks被分为独立的实体,这样你可以使从单一的波形中得到多个声音。这样,你可以添加不同的效果到涉及同一个波形的不同的声音中去。

                                  这是它的XACT工具;确保你通过选择File-Save Project.保存你的项目。到你的XNA项目中,并且导入这个文件到你的XNA项目文件,就象你导入一个图象或者对象文件一样。你可以通过拖拉.xap文件到Content\Audio条目来实现,在你的XNA Game Studio 3.0的解决方案或者通过到你的解决方案浏览器,右击Audio条目,并选择Add-Existing Item.
                                  目前,myXactProject.xap文件应该被列在你的XNA Game Studio3.0程序的解决方案中。
                                  当你编译你的工程,这个XACT项目将会被读并且转化成二进制文件,它将会被写如你的项目输出文件。每个.xapXACT项目文件,你添加到你的XNA项目中,XNA内容管道将创建一个.xgsXNA游戏的声音二进制文件(与XACT项目同名),一个在你项目的每个波形bank.xwb二进制文件和在你的XACT项目的声音bank一个.xsb二进制文件。
                                  在你的XNA项目,你需要去连接三个文件中的每一个成为一个变量,这样,首先声明他们在你的代码的开头:
1  AudioEngine audioEngine;
2  WaveBank waveBank;
3  SoundBank soundBank;
                                  然后连接他们到二进制文件(它将创建/更新当你编译你的项目时).列如,在Initialize方法中:
1  audioEngine = new  AudioEngine( " Content/Audio/MyXACTproject.xgs " );
2  waveBank = new  WaveBank(audioEngine, " Content/Audio/myWaveBank.xwb " );
3  soundBank = new  SoundBank(audioEngine, " Content/Audio/mySoundBank.xsb " );
                                  soundBank变量将包含所有的可演奏的cues.虽然,当你实例化一个新SoundBank,你需要去传递它一个AudioEngine,所以你需要去初始化这个首先。不关你播放一个cue从你的soundBank中,它将查找波形从WaveBank联合它的AudioEngine,所以你同样需要第二行。
注意:myWaveBank和mySoundBank名称将通过你在前面这章的XACT工具来分配。
                                  现在,当你想简单的播放一个声音,所有你不得不去做是调用soundBank变量的PlayCue方法,并且传递它你想播放的cue的名字!
                                 为了确保所有的cues从内存中删除,当它们已经完成时,确保你调用你的audioEngine每一祯的Update方法:
1  audioEngine.Update();

注意:不管你改变到你的XACT项目并且保存它成一个文件,你不能简单运行你的XNA项目的这个.exe,并且期望它去应用这个改变,你在你的XNA项目
中产生的。你首先需要去重新编译(每次按F5完成)你的XNA项目,这样内容管道创建新的二进制文件从你的XACT项目中。

代码
                                 你需要三个全局变量通过它,你可以播放所有你包含的的声音cues在你的XACT项目中:

1  AudioEngine audioEngine;
2  WaveBank waveBank;
3  SoundBank soundBank;
                                 初始化它们在你的项目开始时:

 

1  protected   override   void  Initialize()
2  {
3      audioEngine = new  AudioEngine( " myXactProject.xgs " );
4      waveBank = new  WaveBank(audioEngine, " myWaveBank.xwb " );
5      soundBank = new  SoundBank(audioEngine, " mySoundBank.xsb " );
6       base .Initialize();
7  }
                                 播放声音使用soundBank.PlayCue方法,例如在一个键被压下时,如下面代码所展示。确保调用audioEngine.Update方法每一祯:
 1  protected   override   void  Update(GameTime gameTime)
 2  {
 3         if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
 4                this .Exit();
 5        KeyboardState keyState = Keyboard.GetState();
 6         if (keybState.IsKeyDown(Key.Space))
 7            soundBank.PlayCue( " audio1 " );
 8        audioEngine.Update();
 9         base .Update(gameTime);
10  }
                                 现在当你运行这段代码,这个声音将会在你每次压下空格键后播放。
源代码: http://shiba.hpe.cn/jiaoyanzu/WULI/soft/xna.aspx?classId=4
(完)

转载于:https://www.cnblogs.com/315358525/archive/2009/09/03/1559377.html

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值