Почему возникает ошибка, которая говорит, что переменная не определена. (Единство) - PullRequest
1 голос
/ 26 мая 2019

Я хочу иметь индикатор того, насколько быстро вы двигаетесь, как элемент пользовательского интерфейса. Однако я получаю сообщение об ошибке: не может использовать локальную переменную «lastPosition», прежде чем она объявлена. Объявление локальной переменной скрывает поле «scoreScript.lastPosition».

Я пробовал много разных способов, получая много ошибок (так как я довольно плохо знаком с языком кодирования для единства), и этот из них имел для меня наибольшее значение, к сожалению, эта ошибка все еще существует.

Text shownScore;
public GameObject player;
Vector3 lastPosition;

// Start is called before the first frame update
void Start()
{
    lastPosition = player.transform.position;
    shownScore = GetComponent<Text>();
}

// Update is called once per frame
void Update()
{
    Vector3 offset =  player.transform.position - lastPosition;
    shownScore.text = offset.sqrMagnitude.ToString("#.00");
    Vector3 lastPosition = player.transform.position;
}

1 Ответ

2 голосов
/ 26 мая 2019

Используя:

Vector3 lastPosition = player.transform.position;

вы объявляете новую локальную переменную с именем lastPosition. Эта локальная переменная переопределяет lastPosition в вашем scoreScript, и вы получите сообщение об ошибке при ее использовании. Вместо этого просто используйте тот же lastPosition:

lastPosition = player.transform.position;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...