2017-08-02 93 views
1

我希望能够使用另一个脚本中的变量从一个脚本访问变量。举例来说,如果我有一个脚本,这一变量:使用字符串变量访问其他脚本中的公共变量

public bool Some_Name; 

而且我在其他脚本我有这样的:

private string nameOfThingToGet = "Some_Name"; 
... 
GameObject.Find ("Player").GetComponent <FirstScript>() .nameOfThingToGet = false; 

显然,这不会工作,但如何将能够做些什么喜欢这个?

+0

你走之前这条路,你有没有考虑让'FirstScript'暴露出'词典<字符串,对象>',而不是使用领域?这允许'GameObject.Find(“Player”)。GetComponent ().dictionary [nameOfThingToGet] = false;' –

+0

哦,我明白了,谢谢你的帮助。 – pudility

+0

这就是我所做的。它完美的工作。再次感谢您的帮助。如果你想提交这个作为我的问题的答案,我会标记它是正确的。 – pudility

回答

3

在你走下这条路之前,你有没有考虑让FirstScript公开一个Dictionary<string, object>而不是使用字段?

这允许你哟做

GameObject.Find("Player").GetComponent<FirstScript>().dictionary[nameOfThin‌​gToGet] = false; 
1

您可以使用反射来实现它。

var obj = GameObject.Find ("Player").GetComponent<FirstScript>(); 
FieldInfo myFieldInfo = obj.GetField(nameOfTheThingToGet, 
     BindingFlags.Instance); 

有关设置适当的标志 仅供参考,您可以访问here

+0

我喜欢反射解决方案,但由于这是在游戏引擎中完成的,强烈建议[Scott's](https://stackoverflow.com/a/45468324/3785314)。这是“字典与反思”表现的问题。 – Programmer