目前我使用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}}
上面的代码会给我错误:" 对象参考未设置为对象的实例"这意味着它仍然没有得到橙色物体。
任何想法或建议?
答案 0 :(得分:1)
通过问题评论中的建议。我找到了答案,改变:
GameObject orangeObj = (GameObject) this.GetType().GetField("orange").GetValue(this);
到
GameObject orangeObj = (GameObject) this.GetType().GetField("orange", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this);