public void CameraFieldOfView(AnimationEvent animEvent)
    {
        ActorProp selfProp = transform.parent.GetComponent <ActorProp>();

        if (null == selfProp)
        {
            return;
        }
        Actor self = selfProp.ActorLogicObj;

        if (self.Type != ActorType.enMain)
        {//不是主控角色
            return;
        }
        string[] theparams = animEvent.stringParameter.Split(new char[1] {
            ','
        });
        try
        {
            CameraFOVData fovChanged = new CameraFOVData();
            if (theparams.Length >= 4)
            {
                fovChanged.m_fov = float.Parse(theparams[0]);
                if (fovChanged.m_fov > 10)
                {
                    fovChanged.m_fov = (fovChanged.m_fov / 25.0f) * GameSettings.Singleton.CameraFieldOfView;
                }
                else
                {
                    fovChanged.m_fov = fovChanged.m_fov * GameSettings.Singleton.CameraFieldOfView;
                }
                fovChanged.m_currentToFovTime = float.Parse(theparams[1]);
                fovChanged.m_fovLoopTime      = float.Parse(theparams[2]);
                fovChanged.m_fovGoBackTime    = float.Parse(theparams[3]);
                fovChanged.m_startFov         = GameSettings.Singleton.CameraFieldOfView;
                m_fovLinear = fovChanged;
                UpdateFov();
            }
        }
        catch (System.Exception e)
        {
            Debug.LogError("CameraFieldOfView:" + animEvent.stringParameter + "======error:" + e.Message);
        }
    }
 void UpdateFov()
 {
     if (m_fovLinear.m_startTime < 0.0f)
     {
         m_fovLinear.m_startTime = Time.time;
     }
     if (m_fovLinear.m_currentToFovTime > 0.0f)
     {
         float s = (Time.time - m_fovLinear.m_startTime) / m_fovLinear.m_currentToFovTime;
         if (s > 1.0f)
         {
             s = 1.0f;
             m_fovLinear.m_currentToFovTime = -1.0f;
             m_fovLinear.m_startTime        = -1.0f;
         }
         float fov = m_fovLinear.m_startFov + s * (m_fovLinear.m_fov - m_fovLinear.m_startFov);
         MainGame.Singleton.MainCamera.MainCamera.GetComponent <Camera>().fieldOfView = fov;
     }
     else if (m_fovLinear.m_fovLoopTime > 0.0f)
     {
         if (Time.time - m_fovLinear.m_startTime > m_fovLinear.m_fovLoopTime)
         {
             m_fovLinear.m_fovLoopTime = -1.0f;
             m_fovLinear.m_startTime   = Time.time;
         }
     }
     else
     {
         float s = (Time.time - m_fovLinear.m_startTime) / m_fovLinear.m_fovGoBackTime;
         if (s > 1.0f)
         {
             MainGame.Singleton.MainCamera.MainCamera.GetComponent <Camera>().fieldOfView = m_fovLinear.m_startFov;
             m_fovLinear = null;
         }
         else
         {
             float fov = m_fovLinear.m_fov + s * (m_fovLinear.m_startFov - m_fovLinear.m_fov);
             MainGame.Singleton.MainCamera.MainCamera.GetComponent <Camera>().fieldOfView = fov;
         }
     }
 }