C#获取具有字符串名称的数组?

C#获取具有字符串名称的数组?,c#,unity3d,C#,Unity3d,这是一个假设。从一个相当新的人到整个C#和Unity的事情: 假设我有一系列字符串[]数组。它们都有相似的命名约定。例如: public string[] UndeadEntities = { // stuff }; public string[] DemonEntities = { // stuff }; 现在假设我想随机调用其中一个,我有另一个列表,其中包含所有这些数组的名称,我随机返回它。 我的问题是,我从数组中获取名称,它是一个字符串,而不是我可以使用的东西。所以我的

这是一个假设。从一个相当新的人到整个C#和Unity的事情: 假设我有一系列字符串[]数组。它们都有相似的命名约定。例如:

public string[] UndeadEntities =
{
    // stuff
};

public string[] DemonEntities =
{
    // stuff
};
现在假设我想随机调用其中一个,我有另一个列表,其中包含所有这些数组的名称,我随机返回它。 我的问题是,我从数组中获取名称,它是一个字符串,而不是我可以使用的东西。所以我的问题是: 我有没有办法使用这个字符串来调用上面提到的数组

像这样的事情是我要做的,但我不确定从这里走到哪里,我真的想避免仅仅为了这个而做大量的If-Else声明

public string[] EnemiesType = { // list of all the other arrays }
public string enemiesTypeGeneratedArrayName = "";

public void GenerateEncounterGroup()
{
    enemiesTypeGeneratedArrayName = EnemiesType[Random.Range(0, 12)];
}

我可以将数组嵌套在其他数组中吗?还有其他选择吗?
我不确定这是否可能,但如果可能的话,我会给你一些建议,告诉你从哪里开始。谢谢。

对于您的特定问题,有几种解决方案,一种简单的解决方案是使用字典:

字典是一种数据结构,当你有一个键(通常是一个字符串)和一个值(无论你想存储什么类型)

您可以在开始时初始化一个字典,每个键都是您的敌人类型,它存储的值是您的数组,类似于:

Dictionary<string, string[]> enemyArrays= new Dictionary<string, string[]>();
.
void Start()
{
   enemyArrays["typeA"] = myArrayA;
   enemyArrays["typeB"] = myArrayB;
}
在这里你可以阅读更多关于课堂的信息

还有其他方法可以实现,但我认为这一种很容易在你已经编写的代码中实现,而且字典很酷,哈哈


我希望很清楚:)

this.GetType().GetField(EnemiestyGeneratedArrayName).GetValue(this)
“我可以将数组嵌套在其他数组中吗?”-这非常容易检查,或者在线搜索。但是是的。。。这就是我要做的。谢谢你,我会看看如何设置字典,这非常有帮助
enemiesTypeGeneratedArrayName = EnemiesType[Random.Range(0, 12)];
string[] myRandomArray =enemyArrays[enemiesTypeGeneratedArrayName];
string randomEnemy = myRandomArray[index];