存储和访问分层数据的方法?

时间:2018-08-08 12:05:46

标签: c# unity3d

我正在开发具有很多有关该信息的地形生成器。

现在看这张照片:

enter image description here


另外,假设我有2个功能:

1)Function A作为图块的输入(x,y)坐标,它计算生物群系并吐出计算出的生物群系的字符串,例如"forest"

2)Function B作为function A计算的输入生物群系,并返回该(x,y)切片的计算元素的字符串。例如,假设它返回了"grass"

现在,我拥有那两条信息,我很想立即能够通过"grass"访问"forest""biomes"的信息知道这两个字符串。如果您知道所需信息的索引,可以将其视为立即从数组访问数据。例如,我很想看看可以在森林生物群落的草地上放置哪些瓷砖(图片上的string[] tiles,以及每个瓷砖的概率(float[] probabilityOfTile)。

那么,这里的方法是什么?如何组织数据以根据函数返回的字符串快速访问信息?我当时在考虑嵌套字典,但是经过几层嵌套后代码变得很混乱,所以有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

答案可能是使用一种“复合键”。因此,您可以创建以下字典:

var dataStore = new Dictionary<string, CUSTOM_OBJECT>();

并添加由字符串组成的键,即“ biomes_forrest_grass”。这样,您可以达到“无限”的深度。 用法:

var funcARes = funcA(param1);
var funcBRes = funcB(funcARes);
var yourObjectData = dictionary["${funcARes}_{funcBRes}"];
// then you can do it like this
yourObjectData.tiles[index] and yourObjectData.probability[index]`