Ejemplo n.º 1
0
    public void Init(string strSoundFileName, E_AUDIO_GROUP_TYPE eAudioGroup, E_AUDIO_CHANNEL_TYPE eAudioChannel, E_AUDIO_CLIP_GROUP eAudioClipGroup, Transform trPlace = null, bool bLocalLoad = false, E_LOOP_TYPE eLoopType = E_LOOP_TYPE.PlayOnce, string strKey = "Default", float fFadeInTime = 0.0f, float fFadeOutTime = 0.0f, float fDelay = 0.0f, float fVolume = 0.0f, float fTime = 0.0f)
    {
        m_strSoundFileName = strSoundFileName;
        m_eAudioGroup      = eAudioGroup;
        m_eAudioChannel    = eAudioChannel;
        m_bLocalLoad       = bLocalLoad;
        m_eLoopType        = eLoopType;
        m_trPlace          = trPlace;

        m_eAudioClipGroup = eAudioClipGroup;

        switch (m_eAudioClipGroup)
        {
        case E_AUDIO_CLIP_GROUP.Global:
            m_AudioClipGroup = AudioClipGroup.Global;
            break;

        case E_AUDIO_CLIP_GROUP.Map:
            m_AudioClipGroup = AudioClipGroup.Map;
            break;

        case E_AUDIO_CLIP_GROUP.Bgm_Map:
            m_AudioClipGroup = AudioClipGroup.Bgm_Map;
            break;

        case E_AUDIO_CLIP_GROUP.Bgm_Special:
            m_AudioClipGroup = AudioClipGroup.Bgm_Special;
            break;

        case E_AUDIO_CLIP_GROUP.UI:
            m_AudioClipGroup = AudioClipGroup.UI;
            break;

        default:
            m_AudioClipGroup = AudioClipGroup.Map;
            break;
        }

        m_strKey = strKey;

        if (m_trPlace == null)
        {
            m_trPlace = SoundManager.Instance.GetAudioChannelRoot(eAudioChannel);
            m_strKey  = (globalSoundKey++).ToString();
        }


        m_fFadeInTime  = fFadeInTime;
        m_bUseFadeIn   = !(m_fFadeInTime <= 0.0001f);
        m_fFadeOutTime = fFadeOutTime;
        m_bUseFadeOut  = !(m_fFadeOutTime <= 0.0001f);

        m_fDelay  = fDelay;
        m_fVolume = fVolume;
        m_fTime   = fTime;
        PublishKey();
    }
Ejemplo n.º 2
0
    public AudioChannel GetAudioChannel(E_AUDIO_CHANNEL_TYPE eChannelType)
    {
        if (!m_AudioChannelList.ContainsKey(eChannelType))
        {
            return(null);
        }

        return(m_AudioChannelList[eChannelType]);
    }
Ejemplo n.º 3
0
    public Transform GetAudioChannelRoot(E_AUDIO_CHANNEL_TYPE eChannelType)
    {
        if (!m_AudioChannelList.ContainsKey(eChannelType))
        {
            Debugs.LogError("[사운드] 대상 오디오 채널", eChannelType.ToString(), "이 없습니다!");
            return(null);
        }

        return(m_AudioChannelList[eChannelType].m_trTransform);
    }
Ejemplo n.º 4
0
    //public void Play(int nSoundId, Transform trParent, eAudioGroupType eAudioGroup, bool bLocal = false, int nIndex = 0)
    //{
    //    SoundData Data = SoundDataManager.Instance.GetSoundDataByID(nSoundId);
    //    if (Data == null) return;

    //    Play(Data.name, trParent, eAudioGroup, Data.m_eChannelType, bLocal, nIndex);
    //}

    //public void Play(string strSoundName, Transform trParent, eAudioGroupType eAudioGroup, E_AUDIO_CHANNEL_TYPE eChannelType, bool bLocal = false, int nIndex = 0)
    //{
    //    if (m_AudioChannelList.ContainsKey(eChannelType))
    //    {
    //        AudioObject NewAudioObject = m_AudioChannelList[eChannelType].GetAudioObject();
    //        NewAudioObject.SetParent(trParent);
    //        NewAudioObject.transform.localPosition = Vector3.zero;
    //        NewAudioObject.SetAudioOptionType(eAudioOptionType.BGM);
    //        NewAudioObject.SetAudioGroup(eAudioGroup);

    //        LoadAsyncAddCachClipData(NewAudioObject.name, (clip, loadDelay) =>
    //        {
    //            publicSFXAudio.Play(clip);
    //            publicSFXAudio.OnStop = () => {
    //                ClipCachData data = GetCachClipData(clip.name);
    //                if (data == null)
    //                    return;
    //                RemoveClipCachData(data);
    //            };
    //        }, E_AUDIO_CLIP_GROUP.Stop, bLocal);

    //    }
    //}

    public void Pause(Transform trPlace, E_AUDIO_CHANNEL_TYPE eAudioChannel, string strKey)
    {
        if (!AvaliableAudioChannel(eAudioChannel))
        {
            if (g_bPrintLog)
            {
                Debugs.LogError("[사운드-일시정지] 일시정지 할 채널이 없거나 비활성화 중입니다!");
            }
            return;
        }
        m_AudioChannelList[eAudioChannel].Pause(string.Concat(trPlace.GetInstanceID(), strKey));
    }
Ejemplo n.º 5
0
    /// <summary>
    /// 해당 채널의 해당 객체의 모든 오디오를 중지합니다.
    /// </summary>
    /// <param name="trPlace"></param>
    /// <param name="eAudioChannel"></param>

    public void StopAll(Transform trPlace, E_AUDIO_CHANNEL_TYPE eAudioChannel)
    {
        if (!AvaliableAudioChannel(eAudioChannel))
        {
            if (g_bPrintLog)
            {
                Debugs.LogError("[사운드-중지] 중지할 채널이 없거나 비활성화 중입니다!");
            }
            return;
        }
        m_AudioChannelList[eAudioChannel].StopAll(trPlace);
    }
Ejemplo n.º 6
0
 public void AddAudioChannel(E_AUDIO_CHANNEL_TYPE eChannelType, int nMaxAudio, int nPriority, float fSpatialBlend = 1.0f)
 {
     if (!m_AudioChannelList.ContainsKey(eChannelType))
     {
         AudioChannel NewChannel = Instantiate <AudioChannel>(AudioChannelTemplate);
         NewChannel.gameObject.name = string.Concat(eChannelType.ToString(), " Auidio Channel");
         NewChannel.gameObject.transform.SetParent(m_trChannel);
         NewChannel.Init(eChannelType, nMaxAudio, NewChannel.transform, fSpatialBlend);
         NewChannel.SetPriority(nPriority);
         m_AudioChannelList.Add(eChannelType, NewChannel);
     }
 }
Ejemplo n.º 7
0
    /// <summary>
    /// 해당 채널의 해당 오디오를 중지합니다. (비용이 거의 없음)
    /// </summary>
    /// <param name="eAudioChannel"></param>
    /// <param name="strKey"></param>
    public void Stop(E_AUDIO_CHANNEL_TYPE eAudioChannel, string strKey)
    {
        if (!AvaliableAudioChannel(eAudioChannel))
        {
            if (g_bPrintLog)
            {
                Debugs.LogError("[사운드-중지] 중지할 채널이 없거나 비활성화 중입니다!");
            }
            return;
        }

        m_AudioChannelList[eAudioChannel].Stop(string.Concat(m_AudioChannelList[eAudioChannel].m_trTransform.GetInstanceID(), strKey));
    }
Ejemplo n.º 8
0
    public bool AvaliableAudioChannel(E_AUDIO_CHANNEL_TYPE eChannelType)
    {
        if (!m_AudioChannelList.ContainsKey(eChannelType))
        {
            return(false);
        }

        if (!m_AudioChannelList[eChannelType].m_bActive)
        {
            return(false);
        }

        return(true);
    }
Ejemplo n.º 9
0
    /// <summary>
    /// 채널을 초기화합니다.
    /// </summary>
    /// <param name="eChannelType">채널 타입</param>
    /// <param name="nMaxChannel">최대 동시 재생 사운드 오브젝트 수</param>
    public void Init(E_AUDIO_CHANNEL_TYPE eChannelType, int nMaxChannel, Transform trTransform, float fSpatialBlend)
    {
        m_AudioActiveObjectList   = new List <AudioObject>();
        m_AudioDeactiveObjectList = new List <AudioObject>();
        m_AudioObjectList         = new CustomDictionary <string, AudioObject>();

        m_eChannelType    = eChannelType;
        m_nMaxAudioObject = nMaxChannel;
        m_trTransform     = trTransform;
        m_fSpatialBlend   = fSpatialBlend;

        m_AudioActiveObjectList.Clear();
        m_AudioDeactiveObjectList.Clear();

        FillAudioObject(nMaxChannel);
        m_fVolume     = 1.0f;
        m_fFadeVolume = 1.0f;
        m_bMute       = false;
        m_bActive     = true;

        switch (m_eChannelType)
        {
        case E_AUDIO_CHANNEL_TYPE.BGM_Map:
            m_PlayType = new AudioPlayType_Bgm_Map(this);
            m_LoadType = new AudioLoadType_Bgm(m_PlayType);
            break;

        case E_AUDIO_CHANNEL_TYPE.BGM_SPECIAL:
            m_PlayType = new AudioPlayType_Bgm_Special(this);
            m_LoadType = new AudioLoadType_Bgm(m_PlayType);
            break;

        case E_AUDIO_CHANNEL_TYPE.CV_2D:
        case E_AUDIO_CHANNEL_TYPE.CV_3D:
            m_PlayType = new AudioPlayType_Effect(this);
            m_LoadType = new AudioLoadType_CV(m_PlayType);
            break;

        case E_AUDIO_CHANNEL_TYPE.SE:
        case E_AUDIO_CHANNEL_TYPE.UISE:
            m_PlayType = new AudioPlayType_Effect(this);
            m_LoadType = new AudioLoadType_Effect(m_PlayType);
            break;
        }
    }
Ejemplo n.º 10
0
 public AudioChannel(E_AUDIO_CHANNEL_TYPE eChannelType, int nMaxChannel, Transform trTransform, float fSpatialBlend = 1.0f)
 {
     Init(eChannelType, nMaxChannel, trTransform, fSpatialBlend);
 }
Ejemplo n.º 11
0
    //public SoundPlayData(int nSoundId, E_AUDIO_GROUP_TYPE eAudioGroup, E_AUDIO_CHANNEL_TYPE eAudioChannel, Transform trPlace = null, bool bLocalLoad = false, E_LOOP_TYPE eLoopType = E_LOOP_TYPE.PlayOnce, string strKey = "Default", float fFadeInTime = 0.0f, float fFadeOutTime = 0.0f, float fDelay = 0.0f, float fVolume = 0.0f,float fTime = 0.0f)
    //{
    //    OldSoundData Data = SoundDataManager.Instance.GetSoundDataByID(nSoundId);
    //    if (Data == null) return;

    //    Init(Data.name, eAudioGroup, eAudioChannel, trPlace, bLocalLoad, eLoopType, strKey, fFadeInTime, fFadeOutTime,fDelay,fVolume, fTime);
    //}

    public SoundPlayData(string strSoundFileName, E_AUDIO_GROUP_TYPE eAudioGroup, E_AUDIO_CHANNEL_TYPE eAudioChannel, E_AUDIO_CLIP_GROUP eAudioClipGroup, Transform trPlace = null, bool bLocalLoad = false, E_LOOP_TYPE eLoopType = E_LOOP_TYPE.PlayOnce, string strKey = "Default", float fFadeInTime = 0.0f, float fFadeOutTime = 0.0f, float fDelay = 0.0f, float fVolume = 1.0f, float fTime = 0.0f)
    {
        Init(strSoundFileName, eAudioGroup, eAudioChannel, eAudioClipGroup, trPlace, bLocalLoad, eLoopType, strKey, fFadeInTime, fFadeOutTime, fDelay, fVolume, fTime);
    }
Ejemplo n.º 12
0
 public void Pause(E_AUDIO_CHANNEL_TYPE eAudioChannel, string strKey)
 {
     this.Pause(m_AudioChannelList[eAudioChannel].m_trTransform, eAudioChannel, strKey);
 }