Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Unity, код C#

Позер Тильтов Знаток (376), на голосовании 4 месяца назад
 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, как я могу это сделать, при моем текущем коде изменяется новая, независимая переменная
Голосование за лучший ответ
Арнольд Рванула Профи (642) 5 месяцев назад
Подучи c#, меняем переменные только по названию, без типа данных
Позер ТильтовЗнаток (376) 5 месяцев назад
я и учу, и для того что бы разобраться сюда и пишу
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 месяцев назад
Еще такой маленький момент: статические методы относятся к классу, а не к объекту. То есть сколько бы экземпляров этого класса ты ни создал, твоя а будет одна на всех и за ценой не постоит. Не исключено, что ты так это и задумывал. Но может быть и нет.
Похожие вопросы