Versions history

Full ChangeLog

[3.2.0]

  • Added the ability to stop sound, useful for looping sounds that wouldn’t stop otherwise. Practical when you don’t want to stop the full layer.
  • Fixed a bug where a random would trigger for a single audio clip.

[3.1.3]

  • Modified the Random Pitch feature to allow the user to provide a range, which is simpler to use.
  • Fixed a bug in the Random Pitch feature to prevent the random to return 0, which would pause the audio clip.
  • Fixed a bug where accessing the Audio.time and .timeSamples with a null clip would print warnings in the console.
  • Added more null check prevention on incoming data through public interface and introduced FM_AUDIO_SYSTEM_ERROR_ON_BAD_DATA if you want to receive an error in the unity console when that happens.

[3.1.2]

  • Added the ability to configure the Pitch through a random pitch value, usefull to create variety and reduce ear fatigue for “button click” like sounds.
  • Exposed more fields from AudioDataCollectionItem and AudioDataCollectionScriptable for easier Editor Time asset creation.
  • Added pre-processor directives to handle UNITY_2022_3_OR_NEWER FindObjectOfType deprecation in the Tests suite.

[3.1.1]

  • Added the ability to play a list of audio through an Audio Data Scriptable Collection.
  • Added delay and override volume for each audio data in collection to achieve mixing sounds together.
  • Fixed few bugs with the AudioCollection Random and Sequential features.

[3.1.0]

Breaking Changes – AudioData and AudioDataScritpable

  • Added a feature where IAudioData provides an Array of Audio Clips instead of one instance, if more than one is specified, one will be chosen at random.
  • Fix Editor assembly definition not targetting only the editor platform and enabled Auto Referenced by default on all ASMDEF.

[3.0.2]

  • Added DelaySeconds field that can be set on an AudioData to set a base delay always used when playing the sound.
  • Fixed a behavior where playing an AudioData on a Paused layer would not resume other pause audio if any.

[3.0.1]

  • Fixed compilation when MOQ_TESTING is not defined.

[3.0.0]

Major changes:

  • Renamed Binder class into Mapper, since the former in C# refers to reflection. Same for Bind to Assign instead.
  • Changed #if DEVELOPMENT_BUILD for #if DEBUG instead.
  • Modified the internal behavior of AudioLayerDispatcher|
  • Can now add an AudioLayer on the fly when calling various Play/PlayOneShot functions.
  • Can add an AudioLayer using the AudioLayerKey

Other changes:

  • Implemented a copy of an AudioSource settings by drag and drop on the AudioDataScriptable Inspector object.
  • Added an AudioDataScriptablePlayer MonoBehavior for an easy integration on GameObjects.
  • Added PlayOneRandom amongs the provided AudioData array of AudioDataScriptablePlayer for easy sound effect component.
  • Added AudioLayerUtils as an ideal way of using the AudioLayer with the AudioDataScriptablePlayer.
  • AudioDataScriptablePlayer support for string based custom AudioLayers.

[2.1.2]

  • Added Pause support for Crossfade and SmoothVolume.

[2.1.0]

  • Fixed AudioSource Pool being destroyed when you switch scene, now uses the DontDestoyOnLoad behavior by default.
  • Refactor the internal Crossfading and SmoothVolume to get rid of Coroutines allocation, used the Update loop instead.

[2.0.1]

  • Modified the AudioSourcePool constructor to allow specifying DontDestoyOnLoad through a bool param, true will be the default settings when creating an AudioManager without providing an AudioSourcePool instance. Ensute the default implementation will keep its AudioSourcePool through scene loading.

[2.0.0]

  • Downgraded to support 2019.4.0.f1 and up.
  • Reached code coverage goal of 100% (requires define of MOQ_TESTING and PERFORMANCE_TESTING) to fully reach the 100%.
  • Added an IAudioSourceWrapperProvider for future improvement of the internal AudioLayer management.
  • AudioLayer removed audioSource.Stop() call and a redundant volume assigment.
  • AudioSourcePool return now stop the AudioSource being returned.
  • Modified AudioManager interface to better support a non-default implementation injection if needed.
  • Modified ToString from AudioLayerKey to return the name instead of the Hash.ToString()
  • Removed one overload of the Constructor that took FadeInSeconds in parameter, since you can set it separately.
  • AudioSourceWrapper – Fixed potential nullref on debug info function when provided AudioSource has a null clip. Only happens when you define FM_AUDIO_SYSTEM_DEBUG symbols.
  • ReassignAudioSource does not reset the fading time anymore, since you can set it separately.
  • Fixed potential nullrefs in AudioSourceWrapper when AudioSource is null, now logging an error if FM_AUDIO_SYSTEM_DEBUG is defined.
  • Integrated Moq 4.16.1 for Unit Tests and using Preprocessor directive MOQ_TESTING to exclude that code if your project doesn’t have Moq or use a different version of it.

[1.0.1]

  • Added one overload to Return function in AudioSourcePool to control whether or not the AudioSource GameObject should be re-parented to the AudioSourcePool Root GameObject.
  • Added UnityUtils DestroyObject function to allow AudioSourcePool testing forking between Destroy or DestroyImmediate depending on the playmode.
  • Integrated Performance testing, using PERFORMANCE_TESTING preprocessor directive to exclude the code if you don’t have com.unity.test-framework.performance integrated in your project.

[1.0.0]

  • Initial version, support layers, crossfade, smooth volume.