2016-09-14 71 views
0

我一直在嘗試使用反射一段時間現在,可悲的是我的努力導致我的錯誤,我想要做的是從另一個腳本獲取整數的字段,並改變它,這裏是我的代碼:我無法弄清楚如何使用反射SetValue

我的第一個劇本

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; 
} 

我的第二個腳本

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 
    } 
} 

任何想法?對不起,問一個nooby的問題,我仍然在學習如何編程和提前致謝!

+1

我真的建議不要使用靜態和/或公共領域。 –

+0

@ErikPhilips我在forloop裏面這樣做,我不想一一寫出參考,但是謝謝你的回覆。 – OddTuna

回答

2

第三文化孩子的答案應該爲你工作,我就像另外想說的是你不需要的GameInformation一個實例。您可以使用類似:

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

所以基本上你不需要找GameInformation實例的引用來獲得靜態字段。

+0

@JeryySwitalski啊不知道,謝謝一堆。 – OddTuna

相關問題