# #
Ученик
(186)
8 часов назад
Ваша проблема заключается в том, что значение переменной `_click` прибавляется на 1 при каждом вызове метода `Click1`, но по сути оно всегда увеличивается на 1. Однако, при каждом клике в методе `ClickM`, это значение прибавляется к `_coin`. Таким образом, вы хотите, чтобы на `_coin` прибавлялось не 1, а именно значение из `_click`, которое должно увеличиваться при каждом нажатии на кнопку.
Всё работает правильно с точки зрения механики, но если `_click` всегда увеличивается на 1, это может казаться некорректным. Чтобы исправить это, нужно убедиться, что изменение `_click` происходит так, как вы хотите, и в том месте, где это нужно.
Вот несколько вещей, которые можно улучшить:
### 1. **Обновление переменной `_click` в методе `Click1`:**
Вы правильно увеличиваете `_click` в методе `Click1`. Однако стоит учитывать, что `_click` увеличивается на 1 каждый раз, но сама переменная `_clickSt` увеличивается быстрее (потому что вы прибавляете к ней значение `_v`, которое увеличивается на каждом шаге).
Вам нужно точно понять, как вы хотите, чтобы увеличивалось значение `_click` (например, оно может увеличиваться по какому-то фиксированному значению, а не всегда на 1).
### 2. **Корректное обновление `_coin`:**
Если вы хотите, чтобы при каждом нажатии `_coin` увеличивался на значение переменной `_click`, то это реализовано правильно в методе `ClickM`. Убедитесь, что переменная `_click` изменяется в нужном месте.
### 3. **Проверка логики с увеличением `_clickSt` и `_v`:**
Убедитесь, что логика увеличения `_clickSt` и `_v` в методе `Click1` соответствует вашим ожиданиям. Возможно, вам нужно разделить логику изменения этих переменных для наглядности и корректности.
### Пример исправленного кода:
```csharp
using UnityEngine;
using TMPro;
public class NewEmptyCSharpScript : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI _CoCl;
[SerializeField] private TextMeshProUGUI _Cl1;
private int _coin = 0;
private int _click = 1; // Начальное количество кликов за одно нажатие
private int _clickSt = 5; // Начальная стоимость улучшения
private int _v = 5; // Начальное значение для увеличения стоимости
public void ClickM()
{
_coin += _click; // При каждом клике добавляется значение _click
_CoCl.text = _coin.ToString(); // Обновляем отображение монет
}
public void Click1()
{
// Увеличиваем количество кликов за одно нажатие
_click += 1;
// Увеличиваем стоимость улучшения
_clickSt += _v;
_v += 10; // Увеличиваем шаг увеличения стоимости улучшений
// Обновляем текст отображения стоимости улучшения
_Cl1.text = _clickSt.ToString();
Debug.Log("Click Value: " + _click); // Логирование текущего значения клика
}
}
```
### Пояснения:
1. **ClickM()** — увеличивает количество монет на текущее значение `_click`.
2. **Click1()** — увеличивает значение `_click` на 1 и также увеличивает стоимость улучшений, которые отображаются в `_Cl1`.
Теперь переменная `_click` будет увеличиваться на 1 при каждом вызове `Click1`, и при каждом нажатии в `ClickM` это значение будет прибавляться к монетам.