protected void NavUpdate()
 {
     if (navPathStatus == NavPathStatus.NavPathOrient)
     {
         //如果方向不对,先切换到转向状态
         if (GetAngleBetween(TargetPos) >= Main.Ins.CombatData.AimDegree)
         {
             navPathStatus = NavPathStatus.NavPathIterator;
             Machine.ChangeState(Machine.FaceToState, TargetPos);
             UnityEngine.Debug.Log("进入转向状态");
             return;
         }
         else
         {
             navPathStatus = NavPathStatus.NavPathIterator;
         }
     }
     else if (navPathStatus == NavPathStatus.NavPathIterator)
     {
         if (wayIndex == Machine.Path.ways.Count - 1)
         {
             //最后一个路点
             float   distance = NavType == NavType.NavFindUnit ? CombatData.AttackRange : CombatData.StopDistance;
             Vector3 vector   = TargetPos;
             vector.y = 0;
             if (Vector3.SqrMagnitude(vector - Player.mPos2d) <= distance)
             {
                 navPathStatus = NavPathStatus.NavPathFinished;
                 UnityEngine.Debug.Log("寻路完毕,进入战斗状态");
                 Player.controller.Input.AIMove(0, 0);
                 return;
             }
         }
         else
         {
             Vector3 vector = TargetPos;
             vector.y = 0;
             //不是最后一个路点
             if (Vector3.SqrMagnitude(vector - Player.mPos2d) <= CombatData.StopDistance)
             {
                 wayIndex += 1;
                 TargetPos = Machine.Path.ways[wayIndex].pos;
                 return;
             }
         }
         Player.FaceToTarget(TargetPos);
         Player.controller.Input.AIMove(0, 1);
     }
 }
        protected void NavThink()
        {
            switch (navPathStatus)
            {
            case NavPathStatus.NavPathNone:
                navPathStatus = NavPathStatus.NavPathCalc;
                PathHelper.Ins.CalcPath(Machine, positionStart, positionEnd);
                break;

            case NavPathStatus.NavPathCalc:
                //等待寻路线程的处理.
                if (Machine.Path != null)
                {
                    navPathStatus = NavPathStatus.NavPathComplete;
                }
                break;

            case NavPathStatus.NavPathComplete:
                navPathStatus = NavPathStatus.NavPathOrient;
                if (Machine.Path.ways.Count == 0)
                {
                    //寻路可直达,
                    wayIndex  = 0;
                    TargetPos = positionEnd;
                }
                else
                {
                    wayIndex  = 0;
                    TargetPos = Machine.Path.ways[wayIndex].pos;
                }
                //Machine.ChangeState(Machine.WaitState);
                //for (int i = 0; i < Machine.Path.ways.Count; i++)
                //{
                //    GameObject obj = new GameObject(string.Format("{0}", i));
                //    Idevgame.Util.ObjectUtils.Identity(obj);
                //    obj.transform.position = Machine.Path.ways[i].pos;
                //}
                break;

            case NavPathStatus.NavPathInvalid:
                navPathStatus = NavPathStatus.NavPathIterator;
                ChangeState(Previous);
                break;

            case NavPathStatus.NavPathIterator:
                //调度过程-从当前位置,到目标位置的寻路过程.
                break;
            }
        }