


Unity, код C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class car : MonoBehaviour
{
public static Vector2 a;
void Start()
{
}
public void Update()
{
Vector2 a = transform.position;
}
}
нужно изменить public static Vector2 a в методе update, как я могу это сделать, при моем текущем коде изменяется новая, независимая переменная
В C#, когда переменная объявляется внутри метода, создается новая локальная переменная, а внешняя переменная с тем же именем становится невидимой. Это называется скрытием переменной.
Чтобы изменить публичную статическую переменную Vector2 apole, нужно обратиться к ней напрямую, не объявляя новую переменную. Модифицированный код показан ниже:
public class car : mono behaviour.
{
public static Vector2 a;
void Start()
{
}
void Update()
{
a = transform.position;
}
}
Удалив объявление типа Vector2, компилятор получает указание присвоить значение существующему полю, а не создавать новую локальную переменную.
Примечание: Поскольку это статическое поле, оно используется всеми экземплярами класса car. Если вы хотите иметь отдельное значение для каждого экземпляра, удалите исключающее слово stati.
Подучи c#, меняем переменные только по названию, без типа данных
Еще такой маленький момент: статические методы относятся к классу, а не к объекту. То есть сколько бы экземпляров этого класса ты ни создал, твоя а будет одна на всех и за ценой не постоит. Не исключено, что ты так это и задумывал. Но может быть и нет.
Ты начал изучать программирование не с того.
Но да, ты во первых внутри метода инициализируешь новую переменную, так как пишешь Vector2 a - это создает переменную. Если тебе надо использовать существующую, то пишешь просто "а". Или this.a, если на уровне класса.