Ошибка NullReferenceException

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Ошибка NullReferenceException

Сообщение Dac1 22 май 2019, 20:57

В общем есть три скрипта
Синтаксис:
Используется csharp
public class Tovar
{
    public string na;
    public string populars;
    public string names;
    public int t1, t2, t3, t4;
    public Tovar(int t1,int t2,int t3,int t4 , string names, string populars,string na) {
        this.t1 = t1;
        this.t2 = t2;
        this.t3 = t3;
        this.t4 = t4;
        this.names = names;
        this.populars = populars;
        this.na = na;
    }
   
}

Синтаксис:
Используется csharp
[SerializeField]
Pred ScriptPredmet;
    [SerializeField] Paneli paneli;
    [SerializeField] Tovar tov;
    public GameObject tex;
    Text te;
    public string[] Textobuch;
    public GameObject s;
    public int ads;
    bool obuc,bablo,pa;
    int etap,tap;
    public bool[] priv;
    void Start()
    {
        obuc = false;
        te = tex.GetComponent<Text>();
        ScriptPredmet.tovars.Add(new Tovar(111, 98, 94, 80, "Товар J", "Высокая", "J"));
        ScriptPredmet.tovars.Add(new Tovar(115, 95, 95, 50, "Товар A", "Высокая", "A"));
        ScriptPredmet.tovars.Add(new Tovar(150, 96, 97, 80, "Товар A", "Высокая", "A"));
        ScriptPredmet.tovars.Add(new Tovar(140, 93, 99, 90, "Товар D", "Высокая", "D"));
        ScriptPredmet.tovars.Add(new Tovar(130, 99, 92, 80, "Товар F", "Высокая", "F"));
        ScriptPredmet.tovars.Add(new Tovar(120, 91, 93, 20, "Товар N", "Высокая", "N"));
        paneli.Dobav();
    }

и
Синтаксис:
Используется csharp
public class Pred : MonoBehaviour
{
    public List<Tovar> tovars;
    public static int Money;
    public Text Mn;
    private void Update()
    {
        Mn.text=Money.ToString()+"руб";
    }
    void Predmet() {

    }
}
 

и есть ошибка
NullReferenceException
на строках
Синтаксис:
Используется csharp
ScriptPredmet.tovars.Add(new Tovar(111, 98, 94, 80, "Товар J", "Высокая", "J"));
ScriptPredmet.tovars.Add(new Tovar(115, 95, 95, 50, "Товар A", "Высокая", "A"));
ScriptPredmet.tovars.Add(new Tovar(150, 96, 97, 80, "Товар A", "Высокая", "A"));
ScriptPredmet.tovars.Add(new Tovar(140, 93, 99, 90, "Товар D", "Высокая", "D"));
ScriptPredmet.tovars.Add(new Tovar(130, 99, 92, 80, "Товар F", "Высокая", "F"));
ScriptPredmet.tovars.Add(new Tovar(120, 91, 93, 20, "Товар N", "Высокая", "N"));

И возникает эта ошибка только когда я убираю наследование от MonoBehaviour со скрипта Tovar(это который первый)
Помогите пожалуйста эту ошибку решить
Dac1
UNец
 
Сообщения: 2
Зарегистрирован: 22 май 2019, 20:36

Re: Ошибка NullReferenceException

Сообщение 1max1 22 май 2019, 20:57

Потому что юнити сериализует поля монобеха, тем самым дает экземпляры нулевым полям, когда убираешь наследование, нужно самому создавать экземпляры:
Синтаксис:
Используется csharp
public List<Tovar> tovars = new List<Tovar>();
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Ошибка NullReferenceException

Сообщение Dac1 22 май 2019, 21:01

Спасибо всё заработало
Dac1
UNец
 
Сообщения: 2
Зарегистрирован: 22 май 2019, 20:36


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2