public List <BaseNode> FindPath(int start_x, int start_y, int end_x, int end_y)
    {
        open_list.Clear();
        close_list.Clear();

        Debug.LogError("find type" + findType.ToString());
        BaseNode start = mapLists[start_x][start_y];

        StartNode = start;
        BaseNode end = mapLists[end_x][end_y];

        if (start.nodeType == NodeType.unwalk || end.nodeType == NodeType.unwalk)
        {
            Debug.LogError("寻路终点不可达");
            return(null);
        }

        start.parentNode = null;
        start.f          = 0;
        start.g          = 0;
        start.h          = 0;
        close_list.Add(start); //初始,将起点加入到open_list中

        //查找8个临近的节点

        while (true)
        {
            AddNearNodeToOpenList(start.x, start.y - 1, 1, start, end);
            AddNearNodeToOpenList(start.x, start.y + 1, 1, start, end);
            AddNearNodeToOpenList(start.x - 1, start.y, 1, start, end);
            AddNearNodeToOpenList(start.x + 1, start.y, 1, start, end);

            AddNearNodeToOpenList(start.x - 1, start.y - 1, 1.4f, start, end);
            AddNearNodeToOpenList(start.x + 1, start.y - 1, 1.4f, start, end);
            AddNearNodeToOpenList(start.x - 1, start.y + 1, 1.4f, start, end);
            AddNearNodeToOpenList(start.x + 1, start.y + 1, 1.4f, start, end);

            //开启列表为空,说明找不到了
            if (open_list.Count == 0)
            {
                Debug.LogError("not find path");
                return(null);
            }
            open_list.Sort(Compare);

            close_list.Add(open_list[0]);
            start = open_list[0]; //开启下一次遍历
            open_list.Remove(open_list[0]);


            if (start == end)
            {
                Debug.LogError("find path");
                List <BaseNode> paths = new List <BaseNode>();
                paths.Add(end);
                while (end.parentNode != null)
                {
                    paths.Add(end.parentNode);
                    end = end.parentNode;
                }
                paths.Reverse();
                return(paths);
            }
        }
    }