PlaySoundParams.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. namespace GameFramework.Sound
  8. {
  9. /// <summary>
  10. /// 播放声音参数。
  11. /// </summary>
  12. public sealed class PlaySoundParams : IReference
  13. {
  14. private bool m_Referenced;
  15. private float m_Time;
  16. private bool m_MuteInSoundGroup;
  17. private bool m_Loop;
  18. private int m_Priority;
  19. private float m_VolumeInSoundGroup;
  20. private float m_FadeInSeconds;
  21. private float m_Pitch;
  22. private float m_PanStereo;
  23. private float m_SpatialBlend;
  24. private float m_MaxDistance;
  25. private float m_DopplerLevel;
  26. /// <summary>
  27. /// 初始化播放声音参数的新实例。
  28. /// </summary>
  29. public PlaySoundParams()
  30. {
  31. m_Referenced = false;
  32. m_Time = Constant.DefaultTime;
  33. m_MuteInSoundGroup = Constant.DefaultMute;
  34. m_Loop = Constant.DefaultLoop;
  35. m_Priority = Constant.DefaultPriority;
  36. m_VolumeInSoundGroup = Constant.DefaultVolume;
  37. m_FadeInSeconds = Constant.DefaultFadeInSeconds;
  38. m_Pitch = Constant.DefaultPitch;
  39. m_PanStereo = Constant.DefaultPanStereo;
  40. m_SpatialBlend = Constant.DefaultSpatialBlend;
  41. m_MaxDistance = Constant.DefaultMaxDistance;
  42. m_DopplerLevel = Constant.DefaultDopplerLevel;
  43. }
  44. /// <summary>
  45. /// 获取或设置播放位置。
  46. /// </summary>
  47. public float Time
  48. {
  49. get
  50. {
  51. return m_Time;
  52. }
  53. set
  54. {
  55. m_Time = value;
  56. }
  57. }
  58. /// <summary>
  59. /// 获取或设置在声音组内是否静音。
  60. /// </summary>
  61. public bool MuteInSoundGroup
  62. {
  63. get
  64. {
  65. return m_MuteInSoundGroup;
  66. }
  67. set
  68. {
  69. m_MuteInSoundGroup = value;
  70. }
  71. }
  72. /// <summary>
  73. /// 获取或设置是否循环播放。
  74. /// </summary>
  75. public bool Loop
  76. {
  77. get
  78. {
  79. return m_Loop;
  80. }
  81. set
  82. {
  83. m_Loop = value;
  84. }
  85. }
  86. /// <summary>
  87. /// 获取或设置声音优先级。
  88. /// </summary>
  89. public int Priority
  90. {
  91. get
  92. {
  93. return m_Priority;
  94. }
  95. set
  96. {
  97. m_Priority = value;
  98. }
  99. }
  100. /// <summary>
  101. /// 获取或设置在声音组内音量大小。
  102. /// </summary>
  103. public float VolumeInSoundGroup
  104. {
  105. get
  106. {
  107. return m_VolumeInSoundGroup;
  108. }
  109. set
  110. {
  111. m_VolumeInSoundGroup = value;
  112. }
  113. }
  114. /// <summary>
  115. /// 获取或设置声音淡入时间,以秒为单位。
  116. /// </summary>
  117. public float FadeInSeconds
  118. {
  119. get
  120. {
  121. return m_FadeInSeconds;
  122. }
  123. set
  124. {
  125. m_FadeInSeconds = value;
  126. }
  127. }
  128. /// <summary>
  129. /// 获取或设置声音音调。
  130. /// </summary>
  131. public float Pitch
  132. {
  133. get
  134. {
  135. return m_Pitch;
  136. }
  137. set
  138. {
  139. m_Pitch = value;
  140. }
  141. }
  142. /// <summary>
  143. /// 获取或设置声音立体声声相。
  144. /// </summary>
  145. public float PanStereo
  146. {
  147. get
  148. {
  149. return m_PanStereo;
  150. }
  151. set
  152. {
  153. m_PanStereo = value;
  154. }
  155. }
  156. /// <summary>
  157. /// 获取或设置声音空间混合量。
  158. /// </summary>
  159. public float SpatialBlend
  160. {
  161. get
  162. {
  163. return m_SpatialBlend;
  164. }
  165. set
  166. {
  167. m_SpatialBlend = value;
  168. }
  169. }
  170. /// <summary>
  171. /// 获取或设置声音最大距离。
  172. /// </summary>
  173. public float MaxDistance
  174. {
  175. get
  176. {
  177. return m_MaxDistance;
  178. }
  179. set
  180. {
  181. m_MaxDistance = value;
  182. }
  183. }
  184. /// <summary>
  185. /// 获取或设置声音多普勒等级。
  186. /// </summary>
  187. public float DopplerLevel
  188. {
  189. get
  190. {
  191. return m_DopplerLevel;
  192. }
  193. set
  194. {
  195. m_DopplerLevel = value;
  196. }
  197. }
  198. internal bool Referenced
  199. {
  200. get
  201. {
  202. return m_Referenced;
  203. }
  204. }
  205. /// <summary>
  206. /// 创建播放声音参数。
  207. /// </summary>
  208. /// <returns>创建的播放声音参数。</returns>
  209. public static PlaySoundParams Create()
  210. {
  211. PlaySoundParams playSoundParams = ReferencePool.Acquire<PlaySoundParams>();
  212. playSoundParams.m_Referenced = true;
  213. return playSoundParams;
  214. }
  215. /// <summary>
  216. /// 清理播放声音参数。
  217. /// </summary>
  218. public void Clear()
  219. {
  220. m_Time = Constant.DefaultTime;
  221. m_MuteInSoundGroup = Constant.DefaultMute;
  222. m_Loop = Constant.DefaultLoop;
  223. m_Priority = Constant.DefaultPriority;
  224. m_VolumeInSoundGroup = Constant.DefaultVolume;
  225. m_FadeInSeconds = Constant.DefaultFadeInSeconds;
  226. m_Pitch = Constant.DefaultPitch;
  227. m_PanStereo = Constant.DefaultPanStereo;
  228. m_SpatialBlend = Constant.DefaultSpatialBlend;
  229. m_MaxDistance = Constant.DefaultMaxDistance;
  230. m_DopplerLevel = Constant.DefaultDopplerLevel;
  231. }
  232. }
  233. }