所以,我正在制作一款游戏,并且遇到了问题。我需要一些方法来高效地获取位于3D图形中的对象。从3D图形获取对象的最有效方式
但问题是,他们都可以涵盖多个值来获得。因此,例如,值'foo'可能覆盖x范围400-500,y范围10-20和z范围30-60。
我想知道是否有更高效的方式来存储和获取这些然后通过将它们存储在一个数组中并搜索它们,我不希望这样做,因为这些值很大。
这是为选择一个游戏的生物群系。但是,我选择将此放在GameDev上,因为这似乎更像是一个数据结构问题。然而,我可能是错的,如果我真的很乐意关闭它并在那里打开它。
有没有其他方法可以做到这一点?
public static Tile getTile(int height, int moisture, int temperature) {
for(Tile tile : tileList){
boolean isTile = true;
if(!(tile.heightMax > height && tile.heightMin < height)){
isTile = false;
}
if(!(tile.temperatureMax > temperature && tile.temperatureMin < temperature)){
isTile = false;
}
if(!(tile.moistureMax > moisture && tile.moistureMin < moisture)){
isTile = false;
}
if(isTile){
return tile;
}
}
}
这是我的搜索方法。正如你所看到的,我使用一个列表来存储所有的图块,并搜索符合条件的图块。有没有其他的方法可以尽可能快地用很多瓷砖来做到这一点?
哈希表非常擅长提供对象的快速查找,但是我对数据的结构有点遗憾,真的可以说这是一个可行的解决方案。你有什么尝试? –
执行不明确;当你说“只需将它们存储在数组中”时,你如何存储它们?显示如何存储值的代码片段可以帮助用户更好地回答问题。 –
我试过使用数组来存储和查找。这是为地图选择生物群系,而每个生物群落具有高度,温度和湿度水平。我希望地形的生成尽可能快,所以我需要一些方法来使生物群落快速达到给定的高度,温度和湿度。如果您需要更多信息,请询问。我不擅长给你们可能需要的东西,对此感到抱歉。 – chbachman