#c# #unity3d
#c# #unity3d
Вопрос:
здравствуйте, я хочу использовать функцию if 1 раз, и я не хочу, чтобы она повторялась. Как я могу сделать?
Оценка кода:
public void IncrementScore()
{
// Add to the score
score ;
// Update the score text
scoreText.text = "" score;
// Is there a new hiscore?
if (score > hiscore)
{
// Set the new hiscore
hiscore = score;
// Save the new hiscore
PlayerPrefs.SetInt("hiscore", hiscore);
// Update the hiscore text
hiscoreText.text = "" hiscore;
}
Congratulations.instance.Score25Congratulations();
}
Если функция, которую я хочу использовать 1 раз
public void Score25Congratulations()
{
if (CollectorScript.instance.hiscore == 25)
{
Congratulations25.SetActive(true); //I want it to show 1 time
Time.timeScale = 0f;
}
}
public void Score25CongratulationsButton()
{
Congratulations25.SetActive(false);
Time.timeScale = 1f;
}
Я хочу, чтобы она отображалась 1 раз, но это не происходит повторно. Итак, если число равно 25 Поздравлениям25.SetActive (true); Он повторяется, я не хочу, чтобы это повторялось, я просто хочу, чтобы это вышло один раз, возможно ли такое?
Комментарии:
1. Обратите внимание, что UnityScript — это язык программирования, производный от Javascript, и он был создан для Unity. Unity устарела в 2017 году в пользу языка программирования C #. Поскольку это совершенно отдельный язык программирования, использование
[unityscript]
тега в вашем вопросе C # сбивает с толку, поэтому я удалил его для вас.
Ответ №1:
В общем, я бы проверил его только на новый рекорд, который уже сокращает объем работы.
А затем добавьте простой флаг, который контролирует, что сообщение отображается только при первом достижении 25.
В общем, я бы тоже не стал перебирать одноэлементные шаблоны вперед и назад, а скорее назвал бы это как
bool congrats25alreadyDisplayed;
private void Awake ()
{
congrats25alreadyDisplayed = PlayerPrefs.GetInt("congrats25", 0) > 0;
}
public void IncrementScore()
{
// Add to the score
score ;
// Update the score text
scoreText.text = score.ToString();
// Is there a new hiscore?
if (score > hiscore)
{
// Set the new hiscore
hiscore = score;
// Save the new hiscore
PlayerPrefs.SetInt("hiscore", hiscore);
// Update the hiscore text
hiscoreText.text = hiscore.ToString();
if(hiscore >= 25 amp;amp; !congrats25alreadyDisplayed)
{
// Set flag so never displayed again
congrats25alreadyDisplayed = true;
PlayerPrefs.SetInt("congrats25", 1);
PlayerPrefs.Save();
Congratulations.instance.Score25Congratulations();
}
}
}
А в вашем другом скрипте просто
public void Score25Congratulations()
{
Congratulations25.SetActive(true);
Time.timeScale = 0f;
}
Просто примечание: это Highscore
😉