Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 存储和访问分层数据的方法?_C#_Unity3d - Fatal编程技术网

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

C# 存储和访问分层数据的方法?,c#,unity3d,C#,Unity3d,我正在开发一个地形生成器,它有很多关于它的信息 现在看这张图片: 另外,假设我有两个函数: 1) 函数A将瓷砖的坐标作为输入(x,y),计算生物群落,并输出一组计算出的生物群落,例如“森林” 2) 函数B将函数A计算的biome作为输入,并返回该(x,y)磁贴的计算元素字符串。例如,假设它返回了“grass” 现在我有了这两条信息,我希望通过知道这两条字符串,就可以立即访问中的“草”和中的“森林”和中的“生物群落”的信息。如果您知道所需信息的索引,可以将其视为立即从阵列访问数据。例如,我想看

我正在开发一个地形生成器,它有很多关于它的信息

现在看这张图片:


另外,假设我有两个函数:

1)
函数A
将瓷砖的坐标作为输入(x,y),计算生物群落,并输出一组计算出的生物群落,例如
“森林”

2)
函数B
将函数A计算的biome作为输入,并返回该(x,y)磁贴的计算元素字符串。例如,假设它返回了
“grass”

现在我有了这两条信息,我希望通过知道这两条字符串,就可以立即访问
的“草”
中的
“森林”
中的
“生物群落”
的信息。如果您知道所需信息的索引,可以将其视为立即从阵列访问数据。例如,我想看看哪些瓷砖可以放在森林生物群落的草地上(
string[]tiles
在图片上),以及每个瓷砖的概率是多少(
float[]probabilityOfTile


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

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

var dataStore=newdictionary()

并添加字符串组合键,即“biomes\u forrest\u grass”。这样你就可以达到“无限”的深度。 用法:


不确定这是否是我一直在寻找的答案,但这确实是一个有趣的想法。谢谢@FICHEKK检查我的更新答案。这就是你想要的吗?在更新答案之前,我理解你的意思,但正如我所说的,我不确定这是否是我想要的方法(我想也许一个数据库可以解决这个问题,但我对数据库没有经验,所以我不知道)。然而,考虑到这一点,听起来它目前可以完成这项工作,所以我想这就是答案(至少目前如此)。再次感谢你@菲切克:好的。顺便说一句,db的方法或多或少是一样的。您可以有一个包含键的附加列(或计算列),并根据该列筛选数据
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]`