Я застрял в довольно тупой ситуации: я создаю новый экземпляр родового класса, но он возвращает «странный» нуль.Единство: Нуль при создании нового экземпляра класса
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)
, который является тем, что должно быть в надлежащем классе пример.
Один (только до сих пор) вопрос, что это приносит мне, что если Whitin этого экземпляра класса Rule я называю
Invoke(rule, 0f);
это дает мне ошибку NullReferenceException. Но в то же время фактическая функция
CaughtEnough();
работает просто отлично и, как ожидалось.
Любые идеи, что может быть источником проблемы и как ее преодолеть?
UPD также размещения установки часть класса Rule, как просили, хотя это просто
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;
}
.....
Просто проверьте, если rule2 равно нулю, делая если (Правила2 == NULL) {debug.log ("null")} else {Debug.Log ("Не null")}. Также опубликуйте свой класс Rule, чтобы мы могли видеть, что такое RuleSetup. – Programmer
Спасибо, я проверил, как вы сказали, и rule2 действительно null. – Alex