找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8062|回复: 0

[转载] Ren'Py引擎从入门到放弃(11)——如果有各种声音更好

[复制链接]
发表于 2019-4-25 19:50:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 BuErShen 于 2019-4-25 19:47 编辑

Ren'Py引擎从入门到放弃(11)——如果有各种声音更好

世上无难事,只要肯放弃。

这是入门介绍的第十一篇,主要内容是各种音频相关。(原本准备写支线,发现内容有点多,拖延到五一)

音频制作是个单独的领域,我当然……是不懂的……

好在网上也有不少开放的免费音频资源网站,我们只需要找自己需要的下载用就好。好像前两年BBC都开放了大部分音源库,简直良心。

第一个问题:什么是音频通道?

答:音频通道(channel)的全称应该是“音频信号通道”。在电影和电视还处于模拟信号时代时,视频信号和音频信号在信号来源、存储介质、播放系统等多方面都是分离的(爱迪生先发明留声机,再结合电影拍摄技术发明了有声电影)。进入数字信号时代之后,音频通道更多是用作一个逻辑层面的概念,所以不同的软件和系统对 “通道” 的定义和使用方法存在微妙的差距。

比如各种音乐制作软件中,通常一个“通道”就是一个或一组乐器。同一个通道内的所有声音使用相同的属性设置,如声相、音量、采样率。类似实际乐队中的不同声部。

游戏领域的音频通道则不同,一般是根据用途分类。通常会分成 音乐音效 语音 三种,也就是 Ren'Py默认定义的三个音频通道。同一个通道内一次只能播放一个音频文件,但不同通道之间可以并行播放。audio通道例外,可以同时播放多个音频文件。

第二个问题:有哪些播放音频的语法?

答:播放音频最简单的语法是使用 playstop语句。
[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文件时,开头会出现一个微小卡顿。可能是解码造成的延迟。解决方案也很简单——换成 wavogg文件……

第三个问题:其他非主线剧情中的音乐和音效如何设置?

答:通常在 option.ryp 文件中设置 config.main_menu_musicconfig.game_menu_music ,分别对应主菜单背景音乐和游戏中设置菜单背景音乐。

按钮(button)自带两个可以配置的音效,分别对应指针 悬停(hover) 激活(active) 两种事件消息(event),需要在定义按钮对象时设置,或者提前设置样式(style)并应用在按钮对象上。

如果需要其他组件响应事件消息发出声音,则需要自己写 on语句,根据事件消息类型播放音频文件了。具体实现方式请参考 界面动作(screen action)章节的内容。

总体来说,音频是Ren'Py中简单易用的部分。根据需要稍作设置就能用。难的始终是制作……

预告部分:下一篇应该是个支线,内容是伪3D图层……



“Ren'Py引擎从入门到放弃”系列教程


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2024-10-18 20:33 , Processed in 0.139638 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表