如何使用c#获取本地对象变量

时间:2017-07-22 05:33:06

标签: c# unity3d unityscript gameobject

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

我们说我已定义下面的变量,这些脚本在同一个文件中,而Orange是预制

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; } ,但没有运气,例如:

{{1}}

上面的代码会给我错误:" 对象参考未设置为对象的实例"这意味着它仍然没有得到橙色物体。

任何想法或建议?

1 个答案:

答案 0 :(得分:1)

通过问题评论中的建议。我找到了答案,改变:

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

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