2016-09-14 5 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; 
} 

私の2番目のスクリプト

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

任意のアイデア?申し訳ありませんが、私はまだプログラムの仕方を学んでいて、事前に感謝しています。

+1

静的フィールドや公開フィールドを使用することをお勧めします。 –

+0

@ErikPhilips私はforloopの中でこれをやっています。私は参考文献を1つずつ書きたくはありませんが、返信に感謝します。 – OddTuna

答えて

2

TCKSの答えはあなたのために働く必要があり、私はちょうど加えて、あなたがGameInformationのインスタンスを必要としないことを指すようにしたいと思います。だから、基本的には静的フィールドを取得するためにGameInformationのインスタンスの参照を見つける必要はありません

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

:あなたのようなものを使用することができます。

+0

@ JeryySwitalskiああ、それは、おかげで束を知らなかった。 – OddTuna

関連する問題