Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Unity, код C#

12345678910111213141516
 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, если на уровне класса.