Необходима помощь с изменением времени при нажатии на кнопку в Unity
Прошу увеличите рейтинг данного сообщение на 3. Я осознал свои ошибки, но вопросы еще заблокированы.
Приветствую всех участников! Я столкнулся с ошибкой, которую не могу решить самостоятельно. Пытался реализовать функционал, при котором значение каждой переменной изменялось бы по-разному при нажатии на кнопку в игре Unity, с использованием WaitForSeconds
.
Хочу предупредить, что у меня ограниченный опыт в программировании, поэтому в моем коде может быть неоптимальное решение с тремя одинаковыми частями для каждой переменной. Попытки самостоятельно исправить ошибки только усложнили ситуацию.
Итак разберем немного мой код.
- В коде 3 публичных числовых переменных, которые имеют уникальное значение.
public Text sub;
public int score;
public Text money;
public int score1;
public Text top;
public int score2;
- В каждой корутине (
CountPoints
,CountPoints1
,CountPoints2
) происходит обновление текстовых полей (sub
,money
,top
), а также изменение значений переменныхscore
,score1
иscore2
.
void Start()
{
StartCoroutine(CountPoints());
StartCoroutine(CountPoints1());
StartCoroutine(CountPoints2());
}
- Проверка условия, пока значение
score
меньше 10000.
while (score < 10000)
- Присваивание текстовому полю
sub
значенияscore
как строку и идет увеличение значения переменнойscore
на 1, ну а так же приостановка выполнения корутины на 1 секунду.
{
sub.text = score.ToString();
score++;
yield return new WaitForSeconds(1);
}
Ну и аналогичным образом работают и корутины
CountPoints1()
иCountPoints2()
, но с другими текстовыми полями и переменными, а так с другими значениямиWaitForSeconds
.Я пытался сделать так, чтобы при нажатие кнопки изменялся параметр
WaitForSeconds
, но из за того, что у каждой переменой должен быть уникальное значениеWaitForSeconds
, не смог это сделать...
Заранее благодарен тем, кто сможет помочь мне разобраться в этих ошибках и указать правильное направление для дальнейшего решения проблемы!
Вот весь код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Game : MonoBehaviour
{
public Text sub;
public int score;
public Text money;
public int score1;
public Text top;
public int score2;
public string product;
void Start()
{
StartCoroutine(CountPoints());
StartCoroutine(CountPoints1());
StartCoroutine(CountPoints2());
}
IEnumerator CountPoints()
{
while (score < 10000)
{
sub.text = score.ToString();
score++;
yield return new WaitForSeconds(1);
}
}
IEnumerator CountPoints1()
{
while (score1 < 10000)
{
money.text = score1.ToString();
score1++;
yield return new WaitForSeconds(0.5f);
}
}
IEnumerator CountPoints2()
{
while (score2 > 0)
{
top.text = score2.ToString();
score2--;
yield return new WaitForSeconds(3.6f);
}
}
public void productUpgrade()
{
int count = PlayerPrefs.GetInt(product);
PlayerPrefs.SetInt(product, count = 1);
Debug.Log(count + 1);
}
}