Каким способом можно обратиться к нестатическому полю?

Рейтинг: -1Ответов: 1Опубликовано: 21.03.2023

Пишу скрипт для Unity. Объявляю:

public TMPro.TextMeshProUGUI shawermaCountText;

Ниже, хочу добавить объявленное поле в массив.

public TMPro.TextMeshProUGUI[] countersOfBusiness = new TMPro.TextMeshProUGUI[1] { shawermaCountText };

Компилятор выдает ошибку, что нельзя обратиться к нестатическому полю, методу и т.д. Я понимаю, почему он такое не допускает, но вопрос в другом: как мне объявить поле или массив, чтобы я мог добавить эту перменную в него? Огромное спасибо взаранее! <3 (сделать поле статическим исключается)

Ответы

▲ 1

Просто определите поле countersOfBusiness в методе Start или OnEnable

public TMPro.TextMeshProUGUI shawermaCountText;
public TMPro.TextMeshProUGUI[] countersOfBusiness;

public Start()
{
   countersOfBussiness = new TMPro.TextMeshProUGUI[1] { shawermaCountText }
}

Компилятор не допускает такое по причине того что инициализатор может только обращаться к статическим полям, а для инициализации самого класса существует конструктор. Так как в Unity MonoBehavior не использует конструкторы, то вся инициализация происходит или в Start, или в Awake, или в OnEnable, т.к. эти скрипты выполняются при создании экземпляра скрипта, что как бы заменяет свойства конструктора.