我正在构建一个基本的Java 2D游戏框架,但我不确定使用z排序有效渲染对象的最佳方法。想到的唯一解决方案是
使用ArrayList存储对象,并在进行更改时按比例对比较器进行排序
使用ArrayList保存属于相同深度的对象的HashSets
这个想法是保持对象的顺序,这样渲染对象只需要遍历对象并渲染它们。排序可以通过其他方式处理。
第一个选项需要在添加,删除或移动到不同深度的对象时对ArrayList进行常量排序。第二个选项只需要在深度变化时将单个对象移动到不同的HashSet,但是使用更多内存(取决于深度的数量)。
哪种解决方案(替代解决方案也非常受欢迎)最合乎逻辑?
答案 0 :(得分:0)
在大多数游戏中,对象的排序非常稳定。只有一次,单个对象Z顺序被更改。使用ArrayList
通常可以完成这项工作。请注意,不需要进行常量排序。您添加仅在beginging中排序的对象。然后,您只需将单个对象添加/移动到ArrayList
中的位置。
确保使用同步列表或其他方法以避免{GUI}线程正在扫描列表时ConcurrentModificationException
,而另一个线程正在更改它。