Не уменьшается количество денег Unity
Мне нужно, чтоб при покупке предмета от общих денег отнималась только цена товара, но скрипт не уменьшает значение.
private bool isOpened = false;
public Text moneyText;
public Text lvl;
public int lvlCost = 5;
public void BuyNewLVL()
{
int moneyTextInt = int.Parse(moneyText.text);
if(moneyTextInt >= lvlCost)
{
moneyTextInt-=lvlCost;
moneyText.text = moneyTextInt.ToString();
int lvlint = int.Parse(lvl.text);
lvlint++;
lvl.text = lvlint.ToString();
}
else if(moneyTextInt < lvlCost)
{
}
}
В чем проблема и как ее исправить?
Ответы (1 шт):
Вы не совсем корректно обновляете moneyText.text.Сначала вы разбираете текст на int, а затем вычитаете из него lvlCost. Разумеется, это не будет обновлять moneyText.text. Проще всего обновить moneyText.text после вычитания:
moneyText.text = (moneyTextInt - lvlCost).ToString();
Дополнительно укажите в else if, что вы хотите сделать, если у игрока мало денег.
else if(moneyTextInt < lvlCost)
{
//Не хватает денег
}
Можно ещё проверить, больше ли значение moneyTextInt или равно lvlCost, прежде чем вычитать lvlCost из moneyTextInt.
int moneyTextInt = int.Parse(moneyText.text);
if (moneyTextInt >= lvlCost)
{
moneyText.text = (moneyTextInt - lvlCost).ToString();
int lvlint = int.Parse(lvl.text);
lvlint++;
lvl.text = lvlint.ToString();
}
else
{
//Не хватает денег
}
Ещё можно попробовать int.TryParse() вместо int.Parse(), т.к. int.Parse() выдает исключение, когда входные данные не могут быть проанализированы, в то время как TryParse возвращает false
int moneyTextInt;
if (int.TryParse(moneyText.text, out moneyTextInt))
{
if (moneyTextInt >= lvlCost)
{
moneyText.text = (moneyTextInt - lvlCost).ToString();
int lvlint;
if(int.TryParse(lvl.text, out lvlint))
{
lvlint++;
lvl.text = lvlint.ToString();
}
}
else
{
//Не хватает денег
}
}
Может мой ответ вам поможет.