Каким способом можно обратиться к нестатическому полю?
Пишу скрипт для 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, т.к. эти скрипты выполняются при создании экземпляра скрипта, что как бы заменяет свойства конструктора.