音频

Pyxen 支持两种音频:音效用于短效果,音乐用于较长的曲目。两者都作为组件附加到实体上。

音效

Sound 是一个短音频片段——跳跃声、击中声、拾取金币声。通过生成一个带有 Sound 组件的实体来播放音效:

world.spawn(sound=Sound("jump"))

音效立即播放。你可以控制播放属性:

world.spawn(sound=Sound("laser", loop=True, volume=0.5, pan=-0.5))
属性含义
loop是否循环播放
volume音量(0.0 = 静音,1.0 = 最大)
pan立体声位置(-1.0 = 左,0.0 = 中间,1.0 = 右)

音效从你项目素材中的音频文件加载。

音效库

声音工作区的音效库保存项目的音效:▶ 就地播放一个,列表下方的那行是播放所选声音的代码。顶部的三个按钮用来添加:

把指针停在按钮上可看到它的名称,在 iPad 上则长按。面板太窄放不下三个按钮时,它们会合并到一个 + 音效 菜单里。空的音效库会用文字列出这三项。

在较窄的 iPad 窗口中,SFX 面板的声音和播放留在顶部,它的控件成为托盘中的工具:预设、形状、音高和效果。

声音库栏中的在代码中使用会列出脚本中用到其声音的行;选择一行即可跳过去。在代码中 Cmd+点按声音名,例如 Sound("sfx/coin"),会打开它的声音库并选中那个声音。

音乐

Music 的工作方式与 Sound 类似,但专为较长的曲目设计。音乐是流式播放的,而不是完全加载到内存中:

world.spawn(music=Music("theme", loop=True))

Music 支持相同的属性:loop、volume 和 pan。

曲目还可以告诉你的游戏它播放到了哪里。追踪器模块会提供各个声部和拍,因此游戏可以将某个声部静音,或在每一拍上产生脉冲;channels、beat、bar 和 tempo 请参阅 Music 参考。

音频作为组件

因为音频附加到实体上,你可以像管理其他一切一样管理它:

# start background music
bgm = world.spawn(name="bgm", music=Music("overworld", loop=True))

# stop it later
world.destroy(bgm)

这与 ECS 模型自然契合——音频只是实体上的另一个组件,在帧检查器中和其他一切一样可见。

录制声音

在带麦克风的 Mac 或 iPad 上,在音效库中打开录制音效,即可录制最长 10 秒的一段录音。按圆形按钮或空格键开始,再按一次停止。

停止后,整段录音会完整画出,时长旁的播放会带着播放头播放它;空格键也可以播放和停止。添加到库会把你听过的这段录音添加为新的音效。圆形按钮会直接录制新的一段来替换它,不再询问;空格键则不会。

支持的格式

用**文件 › 导入图像或声音…**将音频文件添加到你的项目。

完整 API 参见 Sound 和 Music。