Derzeit entwickle ich etwas in Unity mit C#.So erhalten Sie lokale Objektvariable mit C#
Lassen Sie uns sagen, dass ich unter Variable definieren, diese Skript in derselben Datei und Orange ist Prefab:
private GameObject orange;
private GameObject avocado;
dann möchte ich Zugang/get es Object von Name/String (Da zukünftige Entwicklung viele dynamische Variable verwenden wird), habe ich es versucht, GetType()
aber kein Glück, zum Beispiel:
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;
}
Der obige Code gibt mir einen Fehler: "Object Reference nicht auf eine Instanz eines Objekts gesetzt" was bedeutet, dass es immer noch nicht das orange Objekt bekommt.
Irgendeine Idee oder Vorschlag?
@ RomanoZumbé ich versuche zu lesen/Zugang 'orange Prefab' durch Zeichenfolge, aber wenn Sie bessere Methode haben, bitte lassen Sie mich wissen ... – anunixercoder
@ RomanoZumbé kann nicht so sein. in 'Start()' Methode, ich möchte Orange 'GameObject' durch Zeichenfolge erhalten. In Zukunft wird es dynamisch sein. d. h. "traube", "avocado", etc ... – anunixercoder
"GetField" erhält nur öffentliche statische und Instanzfelder standardmäßig. Sie müssen es ausdrücklich sagen, um nach privaten Feldern zu suchen: https://stackoverflow.com/questions/95910/find-a-private-field-with-reflection/95973#95973 – 31eee384