把NFT导入高素质的场景,即能获得100个MANA - 只限于500个最佳的场景
X
你好,请选择
语言:
关闭

声音

注意:我们正在改进声音控制器,以支持声音的多个音轨和位置。此功能即将推出。

声音是向用户动作和事件提供反馈的好方法,背景声音还可以为您的场景提供更多背景信息,并改善用户的沉浸感。

注意:请注意,场景外但听觉范围内的用户也会听到场景中的声音,因此在设置音量和 volume curves 音量曲线时应考虑相邻场景。

支持的声音格式因浏览器而异,但使用 .mp3, .accc.ogg 是安全的。

.wav 文件也受支持,但通常不推荐使用,因为文件要大得多。

播放声音

播放声音,需要以下条件:

  • Entity 实体用于播放声音的位置。
  • AudioSource 组件, 用于添加到实体。
  • AudioClip 对象,用作组件的参数。
// Create entity
const cube = new Entity()

// Create AudioClip object, holding audio file
const clip = new AudioClip('sounds/carnivalrides.ogg')

// Create AudioSource component, referencing `clip`
const source = new AudioSource(clip)

// Add AudioSource component to entity
cube.add(source)

// Play sound
source.playing = true

创建 AudioClip 对象时, 需提供声音文件的路径。

声音文件必须在项目目录中,上例中,声音文件保存在场景项目根目录的 sounds 目录下,

提示:我们建议您将声音文件保存在场景内的 /sounds 文件夹中。

每个实体只能有一个 AudioSource 组件,只能有一个 AudioClip。 这个限制可以容易通过添加多个不可见实体来克服,每个不可见实体都可以有自己的声音。

声音的暂停、停止和循环

如果将 AudioSource 组件的 playing 属性设置为 false,会暂停播放。 这意味着如果您稍后再次将 playing 设置为 true,则声音文件将从暂停的位置继续播放。

您可以使用 playOnce() 函数从头到尾播放一次声音,即使之前在中间暂停了播放。

source.playOnce()

要让声音连续循环播放,可将 AudioSource 组件的 loop 字段设置为 true

source.play = true
source.loop = true

循环播放对于添加背景音乐或其他背景声音特别有用。

设定音量

您可以设置 AudioSource 组件的 volume 属性来改变声音的音量。

音量可以是 01 之间的数字。

source.volume = 0.5

注意:当然,声音的音量也会受到声源距离的影响。

重用声音对象

节约处理器资源的一个好方法是在许多 AudioSource 组件上使用相同的 AudioClip 对象。

假设你的场景中有很多球在弹跳,每次碰撞时要发出_扑通_声。 可以为每个球添加一个 AudioSource 组件,并在所有这些组件上使用同一个 AudioClip 对象。