马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 BuErShen 于 2019-4-25 19:47 编辑
Ren'Py引擎从入门到放弃(11)——如果有各种声音更好
世上无难事,只要肯放弃。
这是入门介绍的第十一篇,主要内容是各种音频相关。(原本准备写支线,发现内容有点多,拖延到五一)
音频制作是个单独的领域,我当然……是不懂的……
好在网上也有不少开放的免费音频资源网站,我们只需要找自己需要的下载用就好。好像前两年BBC都开放了大部分音源库,简直良心。
第一个问题:什么是音频通道?
答:音频通道(channel)的全称应该是“音频信号通道”。在电影和电视还处于模拟信号时代时,视频信号和音频信号在信号来源、存储介质、播放系统等多方面都是分离的(爱迪生先发明留声机,再结合电影拍摄技术发明了有声电影)。进入数字信号时代之后,音频通道更多是用作一个逻辑层面的概念,所以不同的软件和系统对 “通道” 的定义和使用方法存在微妙的差距。
比如各种音乐制作软件中,通常一个“通道”就是一个或一组乐器。同一个通道内的所有声音使用相同的属性设置,如声相、音量、采样率。类似实际乐队中的不同声部。
游戏领域的音频通道则不同,一般是根据用途分类。通常会分成 音乐、音效 和 语音 三种,也就是 Ren'Py默认定义的三个音频通道。同一个通道内一次只能播放一个音频文件,但不同通道之间可以并行播放。audio通道例外,可以同时播放多个音频文件。
第二个问题:有哪些播放音频的语法?
答:播放音频最简单的语法是使用 play和 stop语句。
[RenPy] 纯文本查看 复制代码 # channelname表示使用的音频通道名称,soundfilename表示音频文件名。
play channelname "soundfilename"
# 还可以用列表形式加入多个音频文件
play channelname ["soundfilename1", "soundfilename2"]
# 停止只需要指定音频通道
stop channelname
play语句后面可以跟 fadein分句,stop语句后面可以跟 fadeout分句,分别对应淡入和淡出效果。
有时候我们需要循环播放一组背景音乐,这时使用 queue语句将一对音频文件放入music通道 播放队列是最方便的。
[RenPy] 纯文本查看 复制代码 # soundfilename1和soundfilename2分别表示两个音频文件
queue music ["soundfilename1", "soundfilename2"] loop
节选播放可以选取音频文件任意一段时间循环播放,官方文档里也有提到。此处就不赘述了。这里有个点需要注意,循环播放mp3文件时,开头会出现一个微小卡顿。可能是解码造成的延迟。解决方案也很简单——换成 wav或 ogg文件……
第三个问题:其他非主线剧情中的音乐和音效如何设置?
答:通常在 option.ryp 文件中设置 config.main_menu_music 和 config.game_menu_music ,分别对应主菜单背景音乐和游戏中设置菜单背景音乐。
按钮(button)自带两个可以配置的音效,分别对应指针 悬停(hover)和 激活(active) 两种事件消息(event),需要在定义按钮对象时设置,或者提前设置样式(style)并应用在按钮对象上。
如果需要其他组件响应事件消息发出声音,则需要自己写 on语句,根据事件消息类型播放音频文件了。具体实现方式请参考 界面动作(screen action)章节的内容。
总体来说,音频是Ren'Py中简单易用的部分。根据需要稍作设置就能用。难的始终是制作……
预告部分:下一篇应该是个支线,内容是伪3D图层……
“Ren'Py引擎从入门到放弃”系列教程
|