ZMusicManager.lua.txt 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. local ZMusicManager = {}
  2. local tClipList = {}
  3. local INIT_NUM = 10
  4. local function InitBGM()
  5. local audioBGM = CS.UnityEngine.GameObject("BGM")
  6. ZMusicManager.audioBGM = audioBGM
  7. CS.UnityEngine.Object.DontDestroyOnLoad(audioBGM)
  8. audioBGM:AddComponent(typeof(CS.UnityEngine.AudioSource))
  9. end
  10. local function InitSound()
  11. local audioSoud = CS.UnityEngine.GameObject("Sound")
  12. ZMusicManager.audioSoud = audioSoud
  13. for i = 1, INIT_NUM, 1 do
  14. local audioSource = audioSoud:AddComponent(typeof(CS.UnityEngine.AudioSource))
  15. table.insert(tClipList, audioSource)
  16. end
  17. CS.UnityEngine.Object.DontDestroyOnLoad(audioSoud)
  18. end
  19. -- Music
  20. function ZMusicManager:PlayMusic(szBGMPath)
  21. local audioSourceBGM = ZMusicManager.audioBGM:GetComponent("AudioSource")
  22. local BGM = LoadResource(szBGMPath)
  23. audioSourceBGM.clip = BGM
  24. audioSourceBGM.loop = true
  25. audioSourceBGM:Play()
  26. end
  27. function ZMusicManager:PauseMusic()
  28. local audioSourceBGM = ZMusicManager.audioBGM:GetComponent("AudioSource")
  29. audioSourceBGM:Pause()
  30. end
  31. function ZMusicManager.UnPauseMusic()
  32. local audioSourceBGM = ZMusicManager.audioBGM:GetComponent("AudioSource")
  33. audioSourceBGM:UnPause()
  34. end
  35. function ZMusicManager:StopMusic()
  36. local audioSourceBGM = ZMusicManager.audioBGM:GetComponent("AudioSource")
  37. audioSourceBGM:Stop()
  38. end
  39. function ZMusicManager:SetMusicVolume(nVolume)
  40. local audioSourceBGM = ZMusicManager.audioBGM:GetComponent("AudioSource")
  41. audioSourceBGM.volume = nVolume
  42. end
  43. -- Sound
  44. function ZMusicManager:PlaySound(szSoundPath, bLoop)
  45. local soundSource = LoadResource(szSoundPath)
  46. for nIndex, audioSource in pairs(tClipList) do
  47. if not audioSource.isPlaying then
  48. tClipList[nIndex].clip = soundSource
  49. tClipList[nIndex].clip.name = szSoundPath
  50. tClipList[nIndex].loop = bLoop
  51. audioSource:Play();
  52. return
  53. end
  54. end
  55. end
  56. function ZMusicManager:StopSound(szSoundPath)
  57. if not ZMusicManager.audioSoud then
  58. return
  59. end
  60. for _, audioSource in pairs(tClipList) do
  61. if audioSource.isPlaying and audioSource.clip and audioSource.clip.name == szSoundPath then
  62. audioSource:Stop()
  63. end
  64. end
  65. end
  66. function ZMusicManager:PauseSound(szSoundPath)
  67. if not ZMusicManager.audioSoud then
  68. return
  69. end
  70. for _, audioSource in pairs(tClipList) do
  71. if audioSource.clip and audioSource.clip.name == szSoundPath then
  72. audioSource:Pause()
  73. end
  74. end
  75. end
  76. function ZMusicManager:UnPauseSound(szSoundPath)
  77. if not ZMusicManager.audioSoud then
  78. return
  79. end
  80. for _, audioSource in pairs(tClipList) do
  81. if audioSource.clip and audioSource.clip.name == szSoundPath then
  82. audioSource:UnPause()
  83. end
  84. end
  85. end
  86. function ZMusicManager:SetSoundVolume(szSoundPath, nVolume)
  87. if not ZMusicManager.audioSoud then
  88. return
  89. end
  90. for _, audioSource in pairs(tClipList) do
  91. if audioSource.clip and audioSource.clip.name == szSoundPath then
  92. audioSource.volume = nVolume
  93. end
  94. end
  95. end
  96. function ZMusicManager:Init()
  97. InitBGM()
  98. InitSound()
  99. end
  100. function ZMusicManager:UnInit()
  101. end
  102. return ZMusicManager