通过将其名称作为变量插入来从其他类调用变量

时间:2017-11-03 18:48:06

标签: c# unity3d

我的问题是这个,我想要一堆变量,我称之为GlobalVariables,我可以使用并根据需要进行更改。我使用字典来表示相当有用,但是出现了2个问题。首先,我只能使用一种类型,第二种是后来我想在多个类中使用这些变量。

我的下一个解决方案是使用单独的类来定义那里的变量并使用它们像GlobalStatus.Variable。看起来好像是一个好主意然而现在我面临的问题是我需要通过其他变量调用我的GlobalStatus变量。我无法用语言表达(这就是我提出这个问题的原因),但这是用字典完成的。

foreach (string String in Array) {
     if (GlobalStatus[String] == "Test") {
     ...
     }
}

我可以使用Class来存储变量来模拟这种行为吗,或者我应该使用另一种方法来存储所述变量?

2 个答案:

答案 0 :(得分:1)

大卫指出你可能想要避免全局变量,除非你有充分的理由去做它们。

那就是说,如果我是你,我可能会做类似

的事情
namespace Global{
public class Options{
public static Options _Instance;
void Awake(){
if (_Instance == null)
{
_Instance = this;
}
}
}    
}

然后你可以使用Singleton _Instance变量从任何地方调用这个全局Options类,方法是Global.Options._Instance.*Your variable or method*

通过这种方式,您可以拥有一个名为Global的命名空间,它可以有序地保存您的全局变量。

除非有充分的理由,否则我建议你把你的变量分成几个类而不是一个字典来保存它们。

答案 1 :(得分:0)

任务是: 我们有一个包含2个字符串的数组:名称和值。这称为要求。需求作为静态变量保存在全局类中。如何将类中的需求与新数组字符串[2]等需求参数进行比较。

在讨论了一个可能的解决方案之后

  1. 在全局类中使用要求数组

  2. 使用需求名称作为整数而不是字符串类型。

  3. 然后需求名称可以用作全局数组的索引。