Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с С#

Артур Гилязев Ученик (97), открыт 8 часов назад
Делаю кликер, но значение к значению _coin всегда прибавляется 1 вместо _click
 using UnityEngine; 
using TMPro;
using UnityEngine.SceneManagement;

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;
_CoCl.text = _coin.ToString ();
}
public void Click1()
{
_click += 1;
Debug.Log (_click);
_clickSt += _v;
_v += 10;
_Cl1.text = _clickSt.ToString ();
}
}
2 ответа
# # Ученик (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` это значение будет прибавляться к монетам.
Jurijus Zaksas Искусственный Интеллект (473016) 3 часа назад
Значит, срабатывает метод ClickM, а не Click1. Почему - тебе виднее.
Похожие вопросы