FC2ブログ
    08 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 10

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】リフレクションを使って別クラスのprivate変数にアクセスする。 

    こんにちは。
    大坂です。

    ちょっとしたテストをしたいときなんかにprivate変数の値を変更したいときがあったりします。
    ブレークポイント設定したり、TestRunner使ったりでもできるとは思いますが、
    今回はリフレクションを使用して変更してみました。

    変更したいprivate変数を持つクラス

    public class Test_1 : MonoBehaviour
    {
    private int test;
    }

    private変数を変更するクラス

    public class Test_2 : MonoBehaviour
    {
    // Start is called before the first frame update
    void Start()
    {
    Test_1 test_1 = FindObjectOfType<Test_1>();
    // タイプの取得
    Type t = test_1.GetType();
    // private変数へのアクセス用
    FieldInfo f = t.GetField(
    "test",
    BindingFlags.NonPublic |
    BindingFlags.Instance |
    BindingFlags.GetField |
    BindingFlags.FlattenHierarchy |
    BindingFlags.SetField
    );
    // private変数に値の設定
    f.SetValue(test_1, 10);

    Debug.Log(f.GetValue(test_1));
    }
    }

    結果



    ちゃんと値が設定されてますね。

    毎回止めてやるのと面倒な時があるので、こんな方法でもできますよという紹介でした。
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/814-d66374e2
    この記事にトラックバックする(FC2ブログユーザー)