public void Update()
    {
        m_FadeOutRatio = Mathf.Clamp01(m_FadeOutRatio + TimeHelper.GameTime * m_FadeSpeed * (m_FadeOut ? 1.0f : -1.0f));

        if (m_Callback != null)
        {
            if (m_FadeOutRatio == 1.0f && m_FadeOut)
            {
                if (m_Callback != null)
                {
                    m_Callback();
                    m_Callback = null;
                }
            }
            else if (m_FadeOutRatio == 0.0f && !m_FadeOut)
            {
                if (m_Callback != null)
                {
                    m_Callback();
                    m_Callback = null;
                }
            }
        }
    }
 public void FadeOut(float duration, FadeDoneCallBack callback)
 {
     m_FadeSpeed = 1.0f / duration;
     m_FadeOut = true;
     m_Callback = callback;
 }