猿问

统一:创建新类实例时为NULL

统一:创建新类实例时为NULL

我陷入了非常愚蠢的境地:我正在创建泛型类的新实例,但它返回“怪异”NULL。

    Rule rule2 = new Rule(); // initiate the class
    Debug.Log(rule2); //1st debug
    rule2.RuleSetup(r: "CaughtEnough", li: 0); //setting up the parameters
    Debug.Log(rule2.rule); //2nd debug

第一次调试给我

    null
    UnityEngine.Debug:Log(Object)

同时,设置参数工作,第二次调试给我

   CaughtEnough
   UnityEngine.Debug:Log(Object)

它应该在适当的类实例中。

它给我带来的一个(到目前为止)问题是,如果我调用这个规则类实例

   Invoke(rule, 0f);

它给出了NullReferenceException错误。但同时实际的功能

   CaughtEnough();

工作正常,就像预期的那样。

有什么想法,问题的根源是什么,以及如何克服它?

UPD还发布了规则类的安装部分,尽管这很简单


public class Rule : MonoBehaviour {


public string rule;


public int leftInt;

public Dictionary<string, int> leftDict;

public float countdown;


public int outcome;


public CatchManager catchMan;

public Net net;


// Use this for initialization

void Start () {

    RuleSetup();   

}


public void RuleSetup(string r = "NoRule", int li = 0, Dictionary<string, int> ld = null,  float cd = float.PositiveInfinity) {

    rule = r;

    leftInt = li;

    leftDict = ld;

    countdown = cd;

}

.....


12345678_0001
浏览 478回答 3
3回答

慕沐林林

只是跟进一下,我是怎么做的,为什么:我不再继承Rule来自MonoBehaviour避免跟踪创建和删除游戏对象,这似乎是痛苦的。如Invoke方法不存在于泛型类中,我将其替换为反射,如所述。这里

慕妹3146593

再次感谢,其他的一切实际上都是实心的物品与预制的n‘s’工作人员。不知道为什么我认为我可以只使用一个类,在规则:)&nbsp;
随时随地看视频慕课网APP
我要回答