0
目前我使用C#在Unity中开发了一些东西。如何使用c获取本地对象变量#
比方说,我有在下面定义的变量,这些脚本是在同一个文件和橙色是预制:
private GameObject orange;
private GameObject avocado;
然后,我想访问/得到它的对象通过名称/字符串 (因为未来的发展将使用很多动态变量),我已经尝试过使用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;
}
上面的代码会给我错误:“对象引用未设置为对象的实例”,这意味着它仍然没有得到橙色的对象。
任何想法或建议?
@RomanoZumbé我尝试阅读/访问'橙Prefab'的字符串,但如果你有更好的方法,请让我知道... – anunixercoder
@RomanoZumbé不能这样。在'Start()'方法中,我想通过字符串获得Orange'GameObject'。在未来,它将是动态的。即“葡萄”,“鳄梨”等...... – anunixercoder
“GetField”默认只获取公共静态和实例字段。你需要专门告诉它寻找私人领域:https://stackoverflow.com/questions/95910/find-a-private-field-with-reflection/95973#95973 – 31eee384