/// <summary>
    /// 邻居在我的哪个方向,是否算靠的很近
    /// </summary>
    /// <param name="moved_"></param>
    /// <param name="neighbour_"></param>
    /// <param name="dir_"></param>
    /// <param name="offset_"></param>
    /// <returns></returns>
    private bool IsNear(RectTransform moved_, RectTransform neighbour_, ENUM_RECT_DIR dir_, out Vector2 offset_)
    {
        offset_ = Vector3.zero;
        Vector2 moved_coord     = this.GetLocalPositionInCanvas(moved_.gameObject);
        Vector2 neighbour_coord = this.GetLocalPositionInCanvas(neighbour_.gameObject);
        Vector2 aim_coord       = this.CalcMyAimCoord(neighbour_coord, dir_);

        offset_ = aim_coord - moved_coord;
        float cur_dis = (offset_).sqrMagnitude;


        if (dir_ <= ENUM_RECT_DIR.E_RIGHT)
        {
            if (cur_dis > this.m_sqrt_straight_near_dis)
            {
                return(false);
            }
        }
        else
        {
            if (cur_dis > this.m_sqrt_oblique_near_dis)
            {
                return(false);
            }
        }

        offset_ = aim_coord - moved_coord;
        return(true);
    }
    private Vector2 CalcMyAimCoord(Vector2 neighbour_coord_, ENUM_RECT_DIR dir_)
    {
        Vector2 aim_coord = Vector2.zero;

        if (ENUM_RECT_DIR.E_UP == dir_)
        {
            aim_coord = new Vector2(neighbour_coord_.x, neighbour_coord_.y - m_logic_rect_size.y);
        }
        else if (ENUM_RECT_DIR.E_DOWN == dir_)
        {
            aim_coord = new Vector2(neighbour_coord_.x, neighbour_coord_.y + m_logic_rect_size.y);
        }
        else if (ENUM_RECT_DIR.E_LEFT == dir_)
        {
            aim_coord = new Vector2(neighbour_coord_.x + m_logic_rect_size.x, neighbour_coord_.y);
        }
        else if (ENUM_RECT_DIR.E_RIGHT == dir_)
        {
            aim_coord = new Vector2(neighbour_coord_.x - m_logic_rect_size.x, neighbour_coord_.y);
        }
        if (ENUM_RECT_DIR.E_LEFT_UP == dir_)
        {
            aim_coord = new Vector2(neighbour_coord_.x + m_logic_rect_size.x, neighbour_coord_.y - m_logic_rect_size.y);
        }
        else if (ENUM_RECT_DIR.E_RIGHT_UP == dir_)
        {
            aim_coord = new Vector2(neighbour_coord_.x - m_logic_rect_size.x, neighbour_coord_.y - m_logic_rect_size.y);
        }
        else if (ENUM_RECT_DIR.E_LEFT_DOWN == dir_)
        {
            aim_coord = new Vector2(neighbour_coord_.x + m_logic_rect_size.x, neighbour_coord_.y + m_logic_rect_size.y);
        }
        else if (ENUM_RECT_DIR.E_RIGHT_DOWN == dir_)
        {
            aim_coord = new Vector2(neighbour_coord_.x - m_logic_rect_size.x, neighbour_coord_.y + m_logic_rect_size.y);
        }


        return(aim_coord);
    }