meta data for this page
📚 Client/Audio
在沙盘引擎的音频系统中,所有的实例默认是以uuid: string
的形式作为存储介质的。
除此之外,也可以根据情况使用tag\id
绑定及查询功能。
tag
适用于所有匹配的音频标签(例如StopSoundByTag("Test")
将会停止所有正在播放的Tag: Test
音频)
id
适用于所有匹配的声音文件ID(例如StopSoundByID(10)
将会停止所有正在播放的ID: 10
音频)
除此之外,通常使用以下方法进行存储音频实例:
let mySound = Audio.PlaySound(10); //播放声音并储存到变量mySound(返回:字符串UUID) Audio.StopSound(mySound); //停止播放声音
音频系统主要分为Sound、Music、Natural三个主要类型,并且遵循《沙盘引擎》客户端的音量设置规范。
《沙盘引擎》设置界面共有4项音量设置:全局音量(所有声音)、音效音量、音乐音量、背景音量。
使用不同轨道(API)播放的声音,将受到对应轨道的游戏音量控制。
注意:音频系统中Music
是完全独立的,在场景\世界切换后,正在播放的音乐不会被停止,其他类型的音频则会自动停止(Sound\Natural
)。
📒 World端音频控制
为了丰富World端的开发实用性,World/Player增加了类似player.PlaySound()
等方法映射(为某个联机玩家单独播放声音\音乐等),这些方法的参数及用法与本文档内容基本一致,唯一的区别是可以从World脚本直接为某个玩家播放\停止声音。
需要注意的是,由于World端的服务器同步性,绝大多数World端下的音频控制并不能取得返回数据,这就导致World端音频控制更多只能【播放、暂停、继续、停止】(而不能直接:获取音量、检查声音是否正在播放等),从而并不能完全使用Client/Audio
下的所有功能。
World/Player
下的音频控制脚本,相当于给Client/Audio
部分函数做了一个联网映射。
如有实际的更多特殊需求,可以考虑使用【自定义函数\数据传输】的方式来扩展。
📒 Function
📘 PlaySound()
播放一段音效\声音(2D),通过音效轨道(根据音频管理规范,相对较短声音建议使用此功能)。
function PlaySound( audioID: int, loop: bool = false, volume: float = 1, tag: string = null ): string /* audioID:声音ID loop: 是否循环播放 volume:自身相对音量(0.0~1.0),而非全局控制音量 tag:设定标签(可空) */
📘 PlayPureSound()
播放一段纯净音效\声音(2D),通过音效轨道(根据音频管理规范,相对较短声音建议使用此功能),此方法播放的声音将屏蔽音频空间效果(更适合人声等音频)。
function PlayPureSound( audioID: int, loop: bool = false, volume: float = 1, tag: string = null ): string /* audioID:声音ID loop: 是否循环播放 volume:自身相对音量(0.0~1.0),而非全局控制音量 tag:设定标签(可空) */
📘 Play3DSound()
播放一段音效\声音(3D空间),通过音效轨道(根据音频管理规范,相对较短声音建议使用此功能)。
参数中volume
为自身相对音量(0.0~1.0),而非全局控制音量。
function Play3DSound( audioID: int, pos: Vector, radius: float = 80, loop: bool = false, volume: float = 1, tag: string = null ): string /* audioID:声音ID pos:3D坐标 radius:3D声音范围 loop: 是否循环播放 volume:自身相对音量(0.0~1.0),而非全局控制音量 tag:设定标签(可空) */
📘 StopSound()
停止播放指定声音实例。
fadeTime
表示过渡时间,默认为0(直接停止),文档后续参数同理。
function StopSound( uuid: string, fadeTime: float = 0 )
📘 StopSoundByID()
停止播放指定声音实例,通过音频ID(所有匹配的)。
function StopSoundByID( audioID: int, fadeTime: float = 0 )
📘 StopSoundByTag()
停止播放指定声音实例,通过实例Tag(所有匹配的)。
function StopSoundByTag( tag: string, fadeTime: float = 0 )
PlaySound( 10, false, 1, "TempSound" ); PlaySound( 15, false, 1, "TempSound" ); PlaySound( 18, false, 1, "TempSound" ); //以上三个实例全部会被停止播放 StopSoundByTag("TempSound");
📘 StopAllSound()
停止播放全部音效声音(不包括Music和Natural轨道)。
function StopAllSound( fadeTime: float = 0 )
📘 ExistSound()
检查某个声音实例是否存在(正在播放)。
function ExistSound( uuid: string ): bool
📘 ExistSoundByID()
检查某个声音实例是否存在(正在播放)。
function ExistSoundByID( audioID: int ): bool
📘 ExistSoundByTag()
检查某个声音实例是否存在(正在播放)。
function ExistSoundByTag( tag: string ): bool
📘 PlayMusic()
播放一段音效\声音(2D),通过音乐轨道(根据音频管理规范,音乐播放建议使用此功能),此方法播放的声音将屏蔽音频空间效果。
音乐轨道是全局唯一的,同一时间只能存在一个声音。
function PlayMusic( audioID: int, loop: bool = false, fadeTime: float = 3, volume: float = 1 ): string /* audioID:声音ID loop:是否循环播放 fadeTime:过渡时间(秒) volume:自身相对音量(0.0~1.0),而非全局控制音量 */
📘 Play3DMusic()
播放一段音效\声音(3D空间),通过音乐轨道(根据音频管理规范,音乐播放建议使用此功能)。
音乐轨道是全局唯一的,同一时间只能存在一个声音。
function Play3DSound( audioID: int, pos: Vector, radius: float = 80, loop: bool = false, fadeTime: float = 3, volume: float = 1 ): string /* audioID:声音ID pos:3D坐标 radius:3D声音范围 loop:是否循环播放 fadeTime:过渡时间(秒) volume:自身相对音量(0.0~1.0),而非全局控制音量 */
📘 StopMusic()
停止播放并销毁当前音乐实例。
fadeTime
表示过渡时间,如果为0则表示直接停止,文档后续参数同理。
function StopMusic( fadeTime: float = 3 )
📘 PauseMusic()
暂停播放当前音乐。
function PauseMusic( fadeTime: float = 3 )
📘 ResumeMusic()
继续播放当前音乐,仅通过PauseMusic()
暂停的音乐可使用。
function ResumeMusic( fadeTime: float = 3 )
📘 GetPlayingMusic()
获取当前正在播放的声音ID(而非实例UUID),如无正在播放内容则返回-1
。
function GetPlayingMusic(): int
📘 PlayNatural()
播放一段音效\声音(2D),通过自然\背景音轨道(根据音频管理规范,持续背景声音播放建议使用此功能)。
背景音轨道理论支持无数个,通常适用于背景自然声音等场景,通常情况下不建议同时超过8个音轨。
function PlayNatural( audioID: int, channel: int, loop: bool = true, fadeTime: float = 3 ): string /* audioID:声音ID channel:音轨ID(自定义数字) loop:是否循环播放 fadeTime:过渡时间(秒) */
📘 StopNatural()
停止播放并销毁指定背景音轨道实例。
fadeTime
表示过渡时间,如果为0则表示直接停止,文档后续参数同理。
function StopNatural( channel: int, fadeTime: float = 3 ) /* channel:音轨ID(指定播放的音轨) fadeTime:过渡时间(秒) */
Audio.PlayNatural(10, 0); //假设:0号音轨播放的是城市喧嚣背景 Audio.PlayNatural(20, 3); //假设:3号音轨 Audio.StopNatural(0); //停止0号音轨的播放声音,3号音轨不会受到影响
📘 StopAllNatural()
停止播放全部背景音轨声音。
function StopAllNatural( fadeTime: float = 3 )
📘 GetTotalVolume()
获取全局游戏音量1~100
(只读)。
游戏音量数值是不允许通过代码修改的(只读),游戏音量完全遵循【玩家设置界面】的设定数值。
function GetTotalVolume(): int
📘 GetSoundVolume()
获取游戏音效音量(通过PlaySound
)1~100
(只读)。
function GetSoundVolume(): int
📘 GetMusicVolume()
获取游戏音乐音量(通过PlayMusic
)1~100
(只读)。
function GetMusicVolume(): int
📘 GetNaturalVolume()
获取游戏音效(通过PlayNatural
)音量1~100
(只读)。
function GetNaturalVolume(): int