Пример #1
0
    public SoundClip(string clipPath, string clipName)
    {
        this.ClipPath = clipPath;
        this.ClipName = clipName;

        string pathLower = this.ClipPath.ToLower();

        if (pathLower.Contains("bgm") == true)
        {
            this.PlayType = SoundPlayType.BGM;
        }
        else if (pathLower.Contains("effect") == true)
        {
            this.PlayType = SoundPlayType.EFFECT;
        }
        else if (pathLower.Contains("ui") == true)
        {
            this.PlayType = SoundPlayType.UI;
        }
        else
        {
            Debug.LogWarning("Cannot Find Type " + ClipPath);
            this.PlayType = SoundPlayType.None;
        }
    }
Пример #2
0
    public SoundClip(string _clipPath, string _clipName)
    {
        clipPath = _clipPath;
        clipName = _clipName;

        string pathLower = clipPath.ToLower();

        if (pathLower.Contains("bgm") == true)
        {
            playType = SoundPlayType.BGM;
        }
        else if (pathLower.Contains("effect") == true)
        {
            playType = SoundPlayType.EFFECT;
        }
        else if (pathLower.Contains("ui") == true)
        {
            playType = SoundPlayType.UI;
        }
        else
        {
            Debug.LogWarning("Can not Find Type : " + clipPath);
            playType = SoundPlayType.NONE;
        }
    }
Пример #3
0
 public void Clear()
 {
     url      = null;
     audio    = null;
     playType = 0;
     volume   = 1;
 }
Пример #4
0
 public void Init(AudioSource audio_, string url_, SoundPlayType playType_, float volume_)
 {
     audio    = audio_;
     url      = url_;
     playType = playType_;
     volume   = volume_;
 }
Пример #5
0
        //-------∽-★-∽------∽-★-∽--------∽-★-∽LoadItem∽-★-∽--------∽-★-∽------∽-★-∽--------//

        LoadItem AddLoadItem(AudioSource audio_, string url_, SoundPlayType playType_, float volume_)
        {
            LoadItem item = m_itemPool.Pop();

            item.Init(audio_, url_, playType_, volume_);
            m_itemList.Add(item);
            return(item);
        }
Пример #6
0
        /// <summary>
        /// 加载并播放声音(异步加载)
        /// </summary>
        /// <param name="audio_"></param>
        /// <param name="url_"></param>
        /// <param name="playType_"></param>
        /// <param name="volume_"></param>
        public void LoadSound(AudioSource audio_, string url_, SoundPlayType playType_, float volume_)
        {
            url_ = url_.ToLower();
            if (m_assetCache.HasAsset(url_))
            {
                //如果已经在加载队列 TODO

                PlaySound(audio_, url_, playType_, volume_);
                return;
            }

            AddLoadItem(audio_, url_, playType_, volume_);
            m_assetCache.LoadAsync(url_, OnLoaded, this);   //自己是引用者
        }
Пример #7
0
        //-------∽-★-∽------∽-★-∽--------∽-★-∽加载操作∽-★-∽--------∽-★-∽------∽-★-∽--------//

        /// <summary>
        /// 播放声音(同步加载)
        /// </summary>
        /// <param name="audio_"></param>
        /// <param name="url_"></param>
        /// <param name="playType_"></param>
        /// <param name="volume_"></param>
        public void PlaySound(AudioSource audio_, string url_, SoundPlayType playType_, float volume_)
        {
            url_ = url_.ToLower();
            AudioClip clip = AssetCache.me.LoadSync(url_, this) as AudioClip;

            if (clip == null)
            {
                return;
            }

            switch (playType_)
            {
            case SoundPlayType.Once:
                //只播放一次,且会打断当前的播放
                audio_.clip   = clip;
                audio_.loop   = false;
                audio_.volume = volume_;
                audio_.Play();

                break;

            case SoundPlayType.Loop:

                audio_.clip   = clip;
                audio_.loop   = true;
                audio_.volume = volume_;
                audio_.Play();

                break;

            case SoundPlayType.BGM:

                audio_.clip = clip;
                audio_.loop = true;
                //audio_.volume = volume_;  //音量由调用者控制
                audio_.Play();

                break;

            default:
                //OneShot,只播放一次,且不会打断当前的播放
                audio_.PlayOneShot(clip, volume_);

                break;
            }
        }
Пример #8
0
    public SoundClip(string _clipPath, string _clipName)
    {
        this.clipPath = _clipPath;
        this.clipName = _clipName;

        string clipPathLower = this.clipPath.ToLower();

        if (clipPathLower.Contains("bgm") == true)
        {
            this.playType = SoundPlayType.BGM;
        }
        else if (clipPathLower.Contains("effect") == true)
        {
            this.playType = SoundPlayType.EFFECT;
        }
        else if (clipPathLower.Contains("ui") == true)
        {
            this.playType = SoundPlayType.UI;
        }
        else
        {
            this.playType = SoundPlayType.None;
        }
    }
Пример #9
0
        void OnLoaded(object data_)
        {
            AssetData data = data_ as AssetData;

            if (m_itemList.Count > 0)
            {
                LoadItem item;
                for (int i = m_itemList.Count - 1; i >= 0; --i)
                {
                    item = m_itemList[i];
                    if (item.url == data.url)
                    {
                        AudioSource   audio    = item.audio;
                        string        url      = item.url;
                        SoundPlayType playType = item.playType;
                        float         volume   = item.volume;

                        RemoveLoadItem(item);

                        PlaySound(audio, url, playType, volume);
                    }
                }
            }
        }
Пример #10
0
    // 새로 재생할 사운드를 fade in.
    public void fadePlay(SoundPlayType soundType, string id, AudioFader.State fadeType, float fadeTime)
    {
                #if UNITY_EDITOR
        if (BattleSimulator.nowSimulation)
        {
            return;
        }
                #endif

        AudioClip  ac;
        AudioFader fader;

        int p1 = PLAYER_BGM_1;
        int p2 = PLAYER_BGM_2;

        if (soundType == SoundPlayType.Charging)
        {
            if (GameManager.me.isMuteSFX)
            {
                return;
            }
            p1    = PLAYER_CHARGING_1;
            p2    = PLAYER_CHARGING_2;
            fader = chargingFader;
        }
        else if (soundType == SoundPlayType.LoopEffect)
        {
            if (GameManager.me.isMuteSFX)
            {
                return;
            }
            p1    = PLAYER_LOOP_EFFECT_1;
            p2    = PLAYER_LOOP_EFFECT_2;
            fader = loopingEffectFader;
        }
        else
        {
            if (GameManager.me.isMuteBgm)
            {
                return;
            }
            fader = bgmFader;
        }

        switch (fadeType)
        {
        case AudioFader.State.FadeIn:
            if (GameManager.info.soundData.ContainsKey(id) == false)
            {
                return;
            }

            _sd = GameManager.info.soundData[id];

            if (soundType == SoundPlayType.Music)
            {
                ac = loadOrGetAudioClip(_sd);
                stopBG();
            }
            else
            {
                if (soundType == SoundPlayType.LoopEffect)
                {
                    stopLoopEffect();
                }
                else
                {
                    stopLoopChargingEffect();
                }

                ac = loadOrGetSFXAudioClip(_sd);
            }

            if (ac == null)
            {
                return;
            }
            setClip(p1, ac, true);

            fader.start(_audioSources[p1], _audioSources[p2], fadeType, fadeTime);
            break;

        case AudioFader.State.FadeOut:
            if (_audioSources[p1].isPlaying && _audioSources[p1].volume > 0)
            {
                fader.start(_audioSources[p1], null, fadeType, fadeTime);
            }
            else if (_audioSources[p2].isPlaying && _audioSources[p2].volume > 0)
            {
                fader.start(_audioSources[p2], null, fadeType, fadeTime);
            }
            break;

        case AudioFader.State.QueueFade:
        case AudioFader.State.CrossFade:

            if (GameManager.info.soundData.ContainsKey(id) == false)
            {
                return;
            }

            _sd = GameManager.info.soundData[id];

            if (soundType == SoundPlayType.Music)
            {
                ac = loadOrGetAudioClip(_sd);
            }
            else
            {
                ac = loadOrGetSFXAudioClip(_sd);
            }

            if (ac == null)
            {
                fadePlay(soundType, id, AudioFader.State.FadeOut, fadeTime);
                return;
            }

            if (_audioSources[p1].isPlaying && _audioSources[p1].volume > 0)
            {
                setClip(p2, ac, true);
                fader.start(_audioSources[p1], _audioSources[p2], fadeType, fadeTime);
            }
            else if (_audioSources[p2].isPlaying && _audioSources[p2].volume > 0)
            {
                setClip(p1, ac, true);
                fader.start(_audioSources[p2], _audioSources[p1], fadeType, fadeTime);
            }
            else
            {
                setClip(p1, ac, true);
                fader.start(_audioSources[p1], null, AudioFader.State.FadeIn, fadeTime);
            }
            break;
        }
    }
Пример #11
0
 public SoundPlayMessage(SoundPlayType type)
 {
     Type = type;
 }