【发布时间】:2014-03-12 23:17:18
【问题描述】:
这可能是一个菜鸟问题,但我就是不明白。
我正在尝试在我的游戏中实现 A* 寻路。我关注this tutorial 和AstarPathfinder.java 中的代码。但是我没有实例化 AStarPathfinder 类并为所有Nodes 提供一个 2D 数组,而是创建了一个静态方法,我将我的 2D 数组(关卡/世界)传递给该方法,开始和结束节点。
因此,我总是必须将当前和下一个Node 存储在Node next 和Node current 中。然后我将它们添加到打开或关闭列表(取决于它们所属的位置)并使用它们的 setter 方法更改 Node 的 x 和 y 值(位置),以获得下一个节点。
经过几分钟的调试,我注意到这个 (ofc) 也改变了 openList 和 closedList 内节点的值。为了防止这种情况,我可以简单地调用next = new Node(int x, int y) 而不是只设置值,但是由于我的寻路功能每隔几个渲染循环就会运行一次,它会弄乱垃圾收集并消耗大量性能。所以我正在寻找一种可能性,有一个 Node 变量,我可以使用默认构造函数实例化一次,然后更改其值而不更改其在列表中的值。
这有可能吗?
【问题讨论】:
标签: java object reference a-star