如何获取本地对象变量

How to get local Object Variable

目前我使用 C# 在 Unity 中开发一些东西。

假设我定义了下面的变量,这些脚本在同一个文件中,Orange 是 Prefab :

private GameObject orange;
private GameObject avocado;

然后,我想access/get它是Object by Name/String(因为以后的开发会用到很多Dynamic Variable) ,我已经尝试使用 GetType() 但没有运气,例如:

void Awake() {

orange = (GameObject)Resources.Load ("fruits/Orange", typeof(GameObject)); //getting Orange Prefab
avocado = (GameObject)Resources.Load ("fruits/Avocado", typeof(GameObject)); //getting Avocado Prefab

}  

void Start() {

//Here, i try to get orange/avocado/other fruitname by string
GameObject orangeObj = (GameObject) this.GetType().GetField("orange").GetValue(this); 

GameObject _orange = Instantiate ( orangeObj, new Vector3 (elem_1_pos_x, elem_1_pos_y, 0), Quaternion.identity) as GameObject;

}

上面的代码会给我错误:“对象引用未设置到对象的实例”,这意味着它仍然没有得到橙色对象。

有什么想法或建议吗?

根据问题评论中的建议。我找到了答案,更改:

GameObject orangeObj = (GameObject) this.GetType().GetField("orange").GetValue(this); 

GameObject orangeObj = (GameObject) this.GetType().GetField("orange", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this);