| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- 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
|