public void CharaMoveInUpdate()
    {
        m_CurrentMousePosition = m_camera.ScreenToWorldPoint(Input.mousePosition);

        //整体初始位置
        RaycastHit2D hit = Physics2D.Raycast(m_camera.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);

        if (Input.GetMouseButtonDown(0))
        {
            m_LastMousePosition = m_camera.ScreenToWorldPoint(Input.mousePosition);
            if (hit && hit.transform.tag == "Chara" && hit.transform.GetComponent <TileCard>().m_CurrentChara.m_IsMoveFinished == false)
            {
                m_CurrentHoldCard = hit.collider.gameObject.GetComponent <TileCard>();
                m_CurrentHoldCard.StartMove();
            }
            else
            {
                m_CurrentHoldCard = null;
            }
        }


        if (m_CurrentHoldCard)
        {
            RaycastHit2D[] hit2 = Physics2D.RaycastAll(m_camera.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
            foreach (RaycastHit2D r in hit2)
            {
                if (r.transform != m_CurrentHoldCard.transform)
                {
                    if (m_CurrentHoldCard.m_neigbborCard.FindInNeibor(r.transform))
                    {
                        m_CurrentChangeCard = r.transform.GetComponent <TileCard>();//再加一个检测,要保证这个新的 卡牌在原来currenthold卡牌的周围。
                        m_CurrentChangeCard.HighLight();
                    }
                    else
                    {
                        m_CurrentChangeCard = null;
                    }
                }
            }

            m_Distance = m_CurrentMousePosition - m_LastMousePosition;

            if (Input.GetMouseButton(0))
            {
                m_CurrentHoldCard.Move(m_Distance);
            }

            ///当鼠标抬起的时候,调整角色返回或者更换卡牌。
            if (Input.GetMouseButtonUp(0))
            {
                if (m_CurrentChangeCard)
                {
                    m_TileCardMap.ChangeCard(m_CurrentHoldCard, m_CurrentChangeCard);
                    m_TurnState = CardChessTurnState.CharaAttack;
                    m_CurrentAttackCharaTile = m_CurrentHoldCard;
                    ///这里的设计,让角色不影响内容…就是说,确定当前卡片已经活跃过了。这点放在卡片里面。不要放在chara类里面。因为上面还要检测。
                    m_CurrentHoldCard.m_CurrentChara.m_IsMoveFinished = true;
                    m_CurrentHoldCard = null;
                }
                else
                {
                    m_CurrentHoldCard.StopMove();
                    m_CurrentAttackCharaTile = null;
                    m_CurrentHoldCard        = null;
                }
                m_CurrentChangeCard = null;
                m_CurrentHoldCard   = null;
            }
            m_CurrentChangeCard = null;///这里的设计稍微有问题。但是影响不大。
        }
    }