local SMusicManager = {} local tClipList = {} local nInitNum = 10 local function InitBGM() local audioBGM = CS.UnityEngine.GameObject("BGM") SMusicManager.audioBGM = audioBGM CS.UnityEngine.Object.DontDestroyOnLoad(audioBGM) audioBGM:AddComponent(typeof(CS.UnityEngine.AudioSource)) end local function InitSound() local audioSoud = CS.UnityEngine.GameObject("Sound") SMusicManager.audioSoud = audioSoud for i = 1, nInitNum, 1 do local audioSource = audioSoud:AddComponent(typeof(CS.UnityEngine.AudioSource)) table.insert(tClipList, audioSource) end CS.UnityEngine.Object.DontDestroyOnLoad(audioSoud) end -- Music function SMusicManager:PlayMusic(sBGMPath) local audioSourceBGM = SMusicManager.audioBGM:GetComponent("AudioSource") local BGM = LoadResource(sBGMPath) audioSourceBGM.clip = BGM audioSourceBGM.loop = true audioSourceBGM:Play() end function SMusicManager:PauseMusic() local audioSourceBGM = SMusicManager.audioBGM:GetComponent("AudioSource") audioSourceBGM:Pause() end function SMusicManager.UnPauseMusic() local audioSourceBGM = SMusicManager.audioBGM:GetComponent("AudioSource") audioSourceBGM:UnPause() end function SMusicManager:StopMusic() local audioSourceBGM = SMusicManager.audioBGM:GetComponent("AudioSource") audioSourceBGM:Stop() end function SMusicManager:SetMusicVolume(nVolume) local audioSourceBGM = SMusicManager.audioBGM:GetComponent("AudioSource") audioSourceBGM.volume = nVolume end -- Sound function SMusicManager:PlaySound(sSoundPath) local soundSource = LoadResource(sSoundPath) for nIndex, audioSource in pairs(tClipList) do if not audioSource.isPlaying then tClipList[nIndex].clip = soundSource tClipList[nIndex].clip.name = sSoundPath audioSource:Play(); return end end end function SMusicManager:StopSound(sSoundPath) if not SMusicManager.audioSoud then return end for _, audioSource in pairs(tClipList) do if audioSource.isPlaying and audioSource.clip and audioSource.clip.name == sSoundPath then audioSource:Stop() end end end function SMusicManager:PauseSound(sSoundPath) if not SMusicManager.audioSoud then return end for _, audioSource in pairs(tClipList) do if audioSource.clip and audioSource.clip.name == sSoundPath then audioSource:Pause() end end end function SMusicManager:UnPauseSound(sSoundPath) if not SMusicManager.audioSoud then return end for _, audioSource in pairs(tClipList) do if audioSource.clip and audioSource.clip.name == sSoundPath then audioSource:UnPause() end end end function SMusicManager:SetSoundVolume(sSoundPath, nVolume) if not SMusicManager.audioSoud then return end for _, audioSource in pairs(tClipList) do if audioSource.clip and audioSource.clip.name == sSoundPath then audioSource.volume = nVolume end end end function SMusicManager:Init() InitBGM() InitSound() end function SMusicManager:UnInit() end return SMusicManager