Ejemplo n.º 1
0
    /// <summary>
    /// 移除正在播放的音效
    /// </summary>
    /// <param name="id"></param>
    public void RemoveSound(long id)
    {
        AudioGObjAssetPair pair = null;

        mPlayingIds.TryGetValue(id, out pair);
        if (pair != null)
        {
            mPlayingIds.Remove(id);
            AudioSource audioSrc = pair.audioObj.GetComponent <AudioSource>();
            pair.asset.RemoveRef();
            if (audioSrc != null)
            {
                audioSrc.clip = null;
            }
            addToPool(pair.audioObj);
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 自动移除
    /// </summary>
    /// <param name="id"></param>
    /// <param name="delayTime"></param>
    private void autoRemove(long id, float delayTime = 0.2f)
    {
        AudioGObjAssetPair pair = null;

        mPlayingIds.TryGetValue(id, out pair);
        if (pair == null)
        {
            return;
        }
        if (!pair.audioObj.GetComponent <AudioSource>().isPlaying)
        {
            RemoveSound(id);
        }
        else
        {
            CoroutineManager.Singleton.delayedCall(delayTime, () => autoRemove(id));
        }
    }