public void PlayAudio(string filename, AudioType type, int channel, float volume, float fadeintime = 0)
        {
            float startvolume = volume;

            if (fadeintime > 0f)
            {
                fadeintime /= 1000f;
                startvolume = 0f;
            }
            AudioLayer audioLayer = channelDictionary[GetChannelByTypeChannel(type, channel)];

            if (audioLayer.IsPlaying())
            {
                audioLayer.StopAudio();
            }
            bool loop = type == AudioType.BGM;

            if (type == AudioType.BGM)
            {
                if (currentAudio[AudioType.BGM].ContainsKey(channel))
                {
                    currentAudio[AudioType.BGM].Remove(channel);
                }
                currentAudio[AudioType.BGM].Add(channel, new AudioInfo(volume, filename));
            }
            audioLayer.PlayAudio(filename, type, startvolume, loop);
            if (fadeintime > 0.05f)
            {
                audioLayer.StartVolumeFade(volume, fadeintime);
            }
        }
        public void ChangeVolumeOfBGM(int channel, float volume, float time)
        {
            int        channelByTypeChannel = GetChannelByTypeChannel(AudioType.BGM, channel);
            float      time2      = time / 1000f;
            AudioLayer audioLayer = channelDictionary[channelByTypeChannel];

            if (currentAudio[AudioType.BGM].ContainsKey(channel))
            {
                currentAudio[AudioType.BGM][channel].Volume = volume;
            }
            else
            {
                Debug.LogWarning("ChangeVolumeOfBGM could not find existing currentAudio for channel!");
            }
            audioLayer.StartVolumeFade(volume, time2);
        }