SMusicManager.lua.txt 3.2 KB

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