Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我不知道如何使用反射设置值_C#_Unity3d_Reflection - Fatal编程技术网

C# 我不知道如何使用反射设置值

C# 我不知道如何使用反射设置值,c#,unity3d,reflection,C#,Unity3d,Reflection,我尝试使用反射已经有一段时间了,遗憾的是,我的努力导致了错误,我试图从另一个脚本中获取整数字段并对其进行更改,下面是我的代码: 我的第一个剧本 using UnityEngine; using System.Collections; public class GameInformation : MonoBehaviour { void Awake() { DontDestroyOnLoad(transform.gameObject); }

我尝试使用反射已经有一段时间了,遗憾的是,我的努力导致了错误,我试图从另一个脚本中获取整数字段并对其进行更改,下面是我的代码:

我的第一个剧本

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
    }
}
使用UnityEngine;
使用系统集合;
使用UnityEngine.UI;
使用System.Collections.Generic;
使用制度;
公共类升级:MonoBehavior
{
公共信息局;
void Start()
{
gio=GameObject.Find(“lol”).GetComponent();

键入myClassType=gio.GetType().GetField(“TipJar”).SetValue(gio,1,null);//您需要的重载变量是


您需要的重载变量


TcKs答案应该适用于您,我想指出的是,您不需要
GameInformation
的实例。您可以使用以下内容:

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

所以基本上你不需要找到
GameInformation
的实例引用就可以得到静态字段。

TcKs答案应该对你有用,我想补充一点,你不需要
GameInformation
的实例。你可以使用如下方法:

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

所以基本上你不需要找到
GameInformation
的实例引用就可以得到静态字段。

我真的建议不要使用静态和/或公共字段。@ErikPhilips我在forloop中这样做,我不想一个接一个地写引用,但是谢谢你的回复。我真的建议不要使用静态和/或公共字段。@ErikPhilips公共字段。@ErikPhilips我正在forloop中执行此操作,我不想一个接一个地编写引用,但感谢您的回复。@Jeryswitalski ah不知道,非常感谢。@Jeryswitalski ah不知道,非常感谢。