跳转到内容

音乐音效相关问题

如何使用音乐

  • 解答:
image50(1) 【魔方】-【推荐音乐】-【添加各歌曲列表】
image51(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)
--播放音效时,选择在这个元件上播放,注意衰减模式设置为None
Audio:PlaySFXAudio3DInTarget(sfxType, Audio.TARGET_TYPE.Element, self.elementId, distance, Audio.ATT_MODE.None, duration, volume, tune)