声音
用于人声、音乐与音效播放的 `Sound` 类,涵盖音量、静音、倍速、跳转与淡入淡出
本页面正在建设中
测试功能,可能会有变动
Sound 控制游戏中的声音
静态方法
voice
创建一个语音声音
const voice = Sound.voice({
src: 'voice.mp3',
});
// 等同于
const voice = new Sound({
src: 'voice.mp3',
type: SoundType.Voice,
});这里的 type 是默认值,不是强制覆盖。传入一个 id,就能把这句语音放到 voice 之下的某条总线上——
这正是让每位角色拥有各自音量的做法
const line = Sound.voice({src: 'alice-01.mp3', type: 'alice'});arg0: Partial<ISoundUserConfig> | string- 声音的配置或声音源,参见 ISoundUserConfig- 返回
Sound
bgm
创建一个背景音乐。type 默认为 bgm,也可以指定它之下的任意总线
arg0: Partial<ISoundUserConfig> | string- 声音的配置或声音源,参见 ISoundUserConfig- 返回
Sound
sound
创建一个声音。type 默认为 sound,也可以指定它之下的任意总线
arg0: Partial<ISoundUserConfig> | string- 声音的配置或声音源,参见 ISoundUserConfig- 返回
Sound
公共方法
constructor
可链式方法
play
播放声音并等待其结束
const sound = new Sound({
src: 'sound.mp3',
});
scene.action([
sound.play(1000), // 播放并淡入 1 秒
]);任何总线上的音频都可以这样播放,包括 bgm 上的。type 只决定哪一个音量控制管辖这段音频,除此之外别无影响,
所以把环境音放在 bgm 上——让玩家的音乐滑条来控制它——再从普通的一行里播放,是完全正当的做法
这和 scene.setBackgroundMusic() 不是一回事。 这样播放的音频不在场景的背景音乐槽位里,
因此离开场景不会停止它,也不会为它安排交叉淡入淡出。以这种方式播放 bgm 类型的音频会打印一条
console.warn 说明这一点;它只是提醒,不是错误。在 0.22.0 之前,它会抛出异常并在构建链时使整个故事失败
duration?: number- 淡入淡出持续时间(以毫秒为单位)
stop
停止声音。停止后,声音将回到开头
duration?: number- 淡入淡出持续时间(以毫秒为单位)
setVolume
设置声音的音量。给出持续时间后,音量变化是淡入淡出而不是瞬间跳变
const sound = new Sound({
src: 'sound.mp3',
volume: 0,
});
scene.action([
sound
.play()
.setVolume(1, 1000), // 淡入 1 秒
]);volume: number- 音量,从 0 到 1duration?: number- 淡入淡出持续时间(以毫秒为单位)
mute
静默或恢复声音,但不会停止播放
scene.action([
bgm.play(),
bgm.mute(),
bgm.unmute(),
]);muted?: boolean-true表示静默,false表示恢复音量(默认true)- 返回
Proxied<Sound, Chained<LogicAction.Actions>>- 可链式声音实例
unmute
mute(false) 的别名,用于恢复原始音量
- 返回
Proxied<Sound, Chained<LogicAction.Actions>>- 可链式声音实例
setRate
设置声音的播放速率
rate: number- 速率,基准为 1
pause
暂停声音
duration?: number- 淡入淡出持续时间(以毫秒为单位)
resume
恢复播放声音
fade?: number- 淡入淡出持续时间(以毫秒为单位)
seek
跳到音频中的某个位置(以秒计),并从那里继续播放。这是读取播放头的反向操作——音乐播放器界面, 或者「跳过前奏」这样的一行,都需要它
scene.action([
theme.seek(30),
]);对没有在播放的声音是空操作:没有什么可以移动。循环区间(参见
endTime)在跳转后依然保留,
因此在循环的音轨内跳转不会悄悄把它变成一次性播放
time: number- 位置(以秒计),从文件开头算起,而不是从入点算起- 返回
Proxied<Sound, Chained<LogicAction.Actions>>- 可链式声音实例