/// <summary>
        /// Play the specified sound and follow a given target Transform while playing.
        /// Returns a reference to the SoundyController that is playing the sound.
        /// Returns null if no sound is found.
        /// </summary>
        /// <param name="databaseName"> The sound category </param>
        /// <param name="soundName"> Sound Name of the sound </param>
        /// <param name="followTarget"> The target transform that the sound will follow while playing </param>
        public static SoundyController Play(string databaseName, string soundName, Transform followTarget)
        {
            if (!s_initialized)
            {
                s_instance = Instance;
            }
            if (Database == null)
            {
                return(null);
            }
            if (soundName.Equals(NO_SOUND))
            {
                return(null);
            }
            SoundGroupData soundGroupData = Database.GetAudioData(databaseName, soundName);

            if (soundGroupData == null)
            {
                return(null);
            }
            if (Instance.DebugComponent)
            {
                DDebug.Log("Play '" + databaseName + "' / '" + soundName + "' SoundGroupData and follow the '" + followTarget.name + "' GameObject", Instance);
            }
            return(soundGroupData.Play(followTarget, Database.GetSoundDatabase(databaseName).OutputAudioMixerGroup));
        }
        /// <summary>
        /// Play the specified sound at the given position.
        /// Returns a reference to the SoundyController that is playing the sound.
        /// Returns null if no sound is found.
        /// </summary>
        /// <param name="databaseName"> The sound category </param>
        /// <param name="soundName"> Sound Name of the sound </param>
        /// <param name="position"> The position from where this sound will play from </param>
        public static SoundyController Play(string databaseName, string soundName, Vector3 position)
        {
            if (!s_initialized)
            {
                s_instance = Instance;
            }
            if (Database == null)
            {
                return(null);
            }
            if (soundName.Equals(NO_SOUND))
            {
                return(null);
            }
            SoundGroupData soundGroupData = Database.GetAudioData(databaseName, soundName);

            if (soundGroupData == null)
            {
                return(null);
            }
            if (Instance.DebugComponent)
            {
                DDebug.Log("Play '" + databaseName + "' / '" + soundName + "' SoundGroupData at " + position + " position", Instance);
            }
            return(soundGroupData.Play(position, Database.GetSoundDatabase(databaseName).OutputAudioMixerGroup));
        }
        /// <summary>
        /// Play the specified sound with the given category, name and type.
        /// Returns a reference to the SoundyController that is playing the sound.
        /// Returns null if no sound is found.
        /// </summary>
        /// <param name="databaseName"> The sound category </param>
        /// <param name="soundName"> Sound Name of the sound </param>
        public static SoundyController Play(string databaseName, string soundName)
        {
            if (!s_initialized)
            {
                s_instance = Instance;
            }
            if (Database == null)
            {
                return(null);
            }
            if (soundName.Equals(NO_SOUND))
            {
                return(null);
            }
            if (string.IsNullOrEmpty(databaseName) || string.IsNullOrEmpty(databaseName.Trim()))
            {
                return(null);
            }
            if (string.IsNullOrEmpty(soundName) || string.IsNullOrEmpty(soundName.Trim()))
            {
                return(null);
            }

            SoundDatabase soundDatabase = Database.GetSoundDatabase(databaseName);

            if (soundDatabase == null)
            {
                return(null);
            }
            SoundGroupData soundGroupData = soundDatabase.GetData(soundName);

            if (soundGroupData == null)
            {
                return(null);
            }
            return(soundGroupData.Play(Pooler.transform, soundDatabase.OutputAudioMixerGroup));
        }