2016-09-14 3 views
0

Ich habe versucht, Reflexionen für einige Zeit jetzt und leider meine Bemühungen führen mich zu Fehlern, was ich zu tun versuche, ist das Feld einer ganzen Zahl von einem anderen Skript und ändern es, hier ist mein Code:Ich kann nicht herausfinden, wie SetValue mit Reflexionen

Mein erstes Skript

using UnityEngine; 
using System.Collections; 

public class GameInformation : MonoBehaviour 
{ 

    void Awake() 
    { 
     DontDestroyOnLoad(transform.gameObject); 
    } 

    //1 is bought while 0 is not bought 
    public static int TipJar; 
} 

Mein zweites Script

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 
using System.Collections.Generic; 
using System; 


public class Upgrades : MonoBehaviour 
{ 
    public GameInformation gio; 

    void Start() 
    { 
     gio = GameObject.Find("lol").GetComponent<GameInformation>(); 

     Type myClassType = gio.GetType().GetField("TipJar").SetValue(gio, 1, null); //<-- Error 
    } 
} 

Irgendwelche Ideen? Entschuldigung für das Stellen einer nooby Frage ich lerne noch, wie man programmiert und danke im Voraus!

+1

Ich würde wirklich empfehlen, statische und/oder öffentliche Felder zu verwenden. –

+0

@ErikPhilips Ich mache das in einem Forloop und ich möchte die Referenz nicht einzeln schreiben, aber danke für die Antwort. – OddTuna

Antwort

2

TCKS Antwort sollte für Sie arbeiten, würde ich nur als Ergänzung hinweisen, dass Sie keine Instanz GameInformation brauchen. im Grunde brauchen Sie nicht so

typeof(GameInformation).GetField("TipJar", BindingFlags.Static | BindingFlags.Public).SetValue(null, 1); 

zum Beispiel anhand von GameInformation zu bekommen statisches Feld zu finden: Sie können so etwas wie verwenden.

+0

@JeryySwitalski ah wusste das nicht, danke ein Haufen. – OddTuna

Verwandte Themen