public abstract int GetNeighbourNodeCount(AStarNode node);
public virtual void RecycleNode(AStarNode node) { }
public abstract AStarNode GetNeighbourNode(AStarNode node, int index);
protected abstract int CalCostH(AStarNode node);
protected abstract int CalCostG(AStarNode prevNode, AStarNode currentNode);
protected abstract bool CheckArrived(AStarNode node);