- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摘要
以 XNA 为基础的游戏程序可以利用 SoundEffect 类别的功能执行简单的音效播放,或是利用 SoundEffectInstance 类别进行进阶的音效播放控制,包括播放、暂停、恢复、结束、是否要播放 3D 的音效、控制声音从左边或右边的声道输出、控制音调高低、以及控制音量等等。在这一回的文章中,我们将介绍利用 SoundEffectInstance 类别进行进阶音效控制的做法,除此之外,我们也将会介绍支持组织和管理声音文件的 XACT(Cross-platform Audio Creation Tool) 工具。
有关 XNA Framework 提供的 SoundEffect 类别和 SoundEffectInstance 类别的基本功能和使用方法可以参考 [XNA 交互式游戏设计] 一文的说明。
进阶音效控制
Windows Phone 7 智能型手机并非只能播放一种音效,以 XNA 为基础的游戏程序可以同时播放 64 种声音,达成混合多种音效的效果。除此之外,XNA Framework 也支持动态播放音效,例如播放应用程序执行时期建立的音效,或是搭配麦克风播放由外界输入的音效。
[提示]
Windows Phone 7 智能型手机支持同时播放多达 64 种的音效,但是 Xbox 360 游戏机支持播放多达 300 种的音效,可以播放更丰富的声音效果,而 Windows 操作系统则是未限制可以同时播放的音效数目。
当游戏程序想要仿真环绕音效的时候,可以利用 SoundEffectInstance 类别的 Pan 属性控制音效要从左方发声,还是要从右方发声。Pan 属性是一个介于 -1.0 与 1.0 之间的数值,其值为 -1.0 表示要从左方发声,其值为 1.0 表示要从右方发声,而其值为 0 则表示要从中央发声,其默认值为 0。
当游戏程序需要控制所播放的音效的音调高低时,就可以利用 SoundEffectInstance 类别的 Pitch 属性进行控制。Pitch 属性是一个介于 -1.0 与 1.0 之间的数值,其值为 -1.0 表示音调最低,其值为 1.0 表示音调最高,其默认值为 0。
当游戏程序需要控制所播放的音效的音量时,就可以利用 SoundEffectInstance 类别的 Volume 属性进行控制。Volume 属性是一个介于 .0 与 1.0 之间的数值,其值为 0 表示音量最小 (静音),其值为 1 表示音量最大,其默认值为 1。请注意透过 SoundEffectInstance 类别控制的音量取决于 SoundEffect 类别的 MasterVolume 属性的内容值,换句话说将 SoundEffectInstance 类别的 Volume 属性的内容值设定为 1,所呈现的最大音量就是 SoundEffect 类别的 MasterVolume 属性设定的音量。
例如游戏程序想呈现环绕音效的效果,可以先把欲播放的声音文件加入到 Content Pipeline 项目中,然后于 Game1 类别宣告以下的变量,负责管理音效资源、SoundEffectInstance 类别的对象、以及记录音效移动的方向:
SoundEffect RingOut; //管理音效資源的變數
SoundEffectInstance RingOutEffect; //管理 SoundEffectInstance 類別的物件的變數
bool bPaneLeft = false; //記錄音效移動方向的變數
宣告妥变量之后请于 Game1 类别的 LoadContent 方法加入以下的程序代码,负责加载音效资源和建立 SoundEffectInstance 类别的对象:
RingOut = Content.LoadSoundEffect(RingOut); //載入名稱為 RingOut 的音效資源
RingOutEffect = RingOut.CreateInstance(); //建立 SoundEffectInstance 類別的物件
RingOutEffect.IsLooped = true; //設定音效要不斷地重覆播放
加载音效资源并建立妥 SoundEffectInstance 类别的对象之后,我们只要在 Game1 类别的 Update 方法中变更 SoundEffectInstance 类别的对象的 Pan 属性的内容值,就可以变更音效发声的位置,例如以下的程序:
if
文档评论(0)