public void StopSound()
 {
     CocoAudio.StopOnTarget(gameObject);
 }
    /// <summary>
    /// Modify support AnimationOverrideController dynamic loading animClip;
    /// </summary>
    /// <param name="pAnimData"></param>
    /// <returns></returns>
    IEnumerator CoroutinePlay(CCAnimationData pAnimData)
    {
        m_CurrAnimData = pAnimData;
        AnimationClip animClip = GetAnimationClip(pAnimData.AnimName);

        string animName = pAnimData.AnimName;

        if (animClip == null)
        {
            if (m_AnimatorControl is AnimatorOverrideController)
            {
                if (OverrideAnimatorControllerClip(pAnimData, ref animClip))
                {
                    animName = stanceAnimStateName;
                }
                else
                {
                    yield break;
                }
            }
            else
            {
                Debug.LogError("Animation lost : " + animName);
                yield break;
            }
        }

        _CurPlayingClip = animClip;
        if (m_OnPlayAnimation != null)
        {
            m_OnPlayAnimation(pAnimData);
        }

        if (m_CrossEnable)
        {
            animator.CrossFade(animName, 0.1f, 0, pAnimData.normalizedTime);
        }
        else
        {
            animator.Play(animName, 0, pAnimData.normalizedTime);
        }

                #if UNITY_EDITOR
        if (m_LogEnable)
        {
            Debug.Log(Time.time + " - pAnimData : " + animName);
        }
                #endif

        if (m_SoundEnable)
        {
            CocoAudio.StopOnTarget(gameObject);
            CocoAudio.PlayOnTarget(gameObject, pAnimData.Audio);
        }
        float animLength = animClip.length * (1 - pAnimData.normalizedTime) / animator.speed;
        switch (pAnimData.mWrapMode)
        {
        case WrapMode.Loop:
            while (true)
            {
                yield return(new WaitForSeconds(animLength));

                if (m_SoundEnable)
                {
                    CocoAudio.PlayOnTarget(gameObject, pAnimData.Audio);
                }
            }
            break;

        case WrapMode.ClampForever:
            yield return(new WaitForSeconds(animLength));

            while (true)
            {
                yield return(new WaitForEndOfFrame());
            }
            break;

        default:                    // Clamp
            yield return(new WaitForSeconds(animLength));

            break;
        }

        m_CurrAnimData = null;
        if (m_PlayAnimationList != null && m_PlayAnimationList.Count > 0)
        {
            PlayList(m_PlayAnimationList);
        }
        else if (m_AutoSwitchEanble)
        {
            SwitchAnimation();
        }

        if (m_OnFinishAnimation != null)
        {
            m_OnFinishAnimation(pAnimData);
        }
    }