#c# #unity3d
#c# #unity3d
Вопрос:
Как мне установить переменную во время выполнения в методе Start() или awake, который я могу использовать в Update()?
Вот что я пробовал.
public class Unlock : MonoBehaviour
{
// I want to set this to a random number on start or awake
public string password;
void Start()
{
// So I set a string of a random number to compare later to a text box.
string password = (Random.Range(10, 350) / 10 * 10 ).ToString();
print(password);
}
// Update is called once per frame
void Update()
{
// I can never get this to print the randomly set number. Please help :)
print(password)
}
}
Комментарии:
1. Классический случай затенения существующего поля. Ваш local
string password
скрывает поле класса внутриStart
-> внутриStart
имениpassword
, которое всегда ссылается на локальную переменную, приUpdate
доступе к полю класса с тем же именем, которое никогда не присваивается.
Ответ №1:
Вы объявили локальную переменную, вызываемую password
in Start()
, затеняющую глобальную версию password
. Простое удаление объявления внутри Start()
решит вашу проблему:
void Start()
{
// So I set a string of a random number to compare later to a text box.
password = (Random.Range(10, 350) / 10 * 10 ).ToString(); // like so
print(password);
}
Комментарии:
1. ХОРОШО, я ЭТО ИСПРАВИЛ! Мне просто нужно было запустить строку кода в методе, который возвращал строку. Запустите метод в start() / awake(), Тогда я смогу получить доступ к возвращаемому значению в Update() … derp :/
2. @WarSaw нет .. ваша ошибка заключалась скорее в затенении существующего поля путем создания локальной переменной с тем же именем … вам нужно было только удалить
string
fromstring password = ...
вStart
Ответ №2:
public class GameplayTaskManager : MonoBehaviour
{
public string password;
// I made a new method that returned the value I wanted.
string Password()
{
// This gets a string of a random number
password = ((Random.Range(10, 350) / 10) * 10).ToString();
return password;
}
void Start()
{
//Sets the string of the number one time
Password();
}
void Update()
{
//This returns the value in start() not zero like before :)
print(password);
}