Голосование за лучший ответ
Ava Fluxx
Знаток
(370)
5 месяцев назад
В C#, когда переменная объявляется внутри метода, создается новая локальная переменная, а внешняя переменная с тем же именем становится невидимой. Это называется скрытием переменной.
Чтобы изменить публичную статическую переменную Vector2 apole, нужно обратиться к ней напрямую, не объявляя новую переменную. Модифицированный код показан ниже:
public class car : mono behaviour.
{
public static Vector2 a;
void Start()
{
}
void Update()
{
a = transform.position;
}
}
Удалив объявление типа Vector2, компилятор получает указание присвоить значение существующему полю, а не создавать новую локальную переменную.
Примечание: Поскольку это статическое поле, оно используется всеми экземплярами класса car. Если вы хотите иметь отдельное значение для каждого экземпляра, удалите исключающее слово stati.
Максим
Искусственный Интеллект
(213289)
5 месяцев назад
Ты начал изучать программирование не с того.
Но да, ты во первых внутри метода инициализируешь новую переменную, так как пишешь Vector2 a - это создает переменную. Если тебе надо использовать существующую, то пишешь просто "а". Или this.a, если на уровне класса.
Jurijus Zaksas
Искусственный Интеллект
(445791)
5 месяцев назад
Еще такой маленький момент: статические методы относятся к классу, а не к объекту. То есть сколько бы экземпляров этого класса ты ни создал, твоя а будет одна на всех и за ценой не постоит. Не исключено, что ты так это и задумывал. Но может быть и нет.