音乐音效相关问题
如何使用音乐
- 解答:
![]() | (1) 【魔方】-【推荐音乐】-【添加各歌曲列表】 |
|---|---|
![]() | (2) 【编辑推荐音乐】-【选择歌曲图标】 |
使用:
GameServer.lua
--@description 游戏开始时客户端的操作function GameClient:OnStart() --从10秒开始播放音乐(音乐id按创建顺序依次为:1、2、3,如果是首次创建MusicIndex填入为1) Music:PlayMusicByStartTime(MusicIndex,10)end音效API如何解决音量被覆盖的问题
- 解答:
- 无论是使用PlaySFXAudio3DInTarget还是PlaySFXAudio2DAPI,其本质都是在游戏场景中设置一个发声源和监听者,而同一个发声源目前只支持设置一个音量(Volume)与音调(Tune)。
- 因此就会出现,如果在相同场景实例(如角色、生物、元件)上挂载多个音效播放(并在同一时间播放),音量与音调均会以最后设置的为准。
- 解决方法:如果希望同时播放音效时音量可以独立设置,需要挂载到不同的场景实例上。对于2D音效播放,可以参考下面的例子进行转化。
GameClient.lua
--针对2D模式做特殊处理,初始化时,需要创建一个不可见的元件,附加在玩家骨骼上,并设置偏移=0,令音效在这个元件上播放local pos, rot, scale = Engine.Vector(0,0,0), Engine.Rotator(0,0,0), Engine.Vector(1,1,1)self.elementId = nil-下面是创建元件的回调函数local callBack = function(elementId) self.elementId = elementId Element:SetEnableCollision(self.elementId, false) --关闭元件碰撞 Element:SetVisibility(self.elementId, false)--隐藏元件显示 local localPlayerId = Character:GetLocalPlayerId() --将元件附加至玩家Root骨骼 Element:BindingToCharacterOrNPC(self.elementId, localPlayerId, Character.SOCKET_NAME.Root, Character.SOCKET_MODE.SnapToTarget) --设置元件相对位置 Element:SetPosition(self.elementId, Engine.Vector(0, 0, 0), Element.COORDINATE.Part)end--创建元件Element:SpawnElement(Element.SPAWN_SOURCE.Config, 1101002001034000, callBack, pos, rot, scale)
--播放音效时,选择在这个元件上播放,注意衰减模式设置为NoneAudio:PlaySFXAudio3DInTarget(sfxType, Audio.TARGET_TYPE.Element, self.elementId, distance, Audio.ATT_MODE.None, duration, volume, tune)
