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

Проблема с Юнити Unity

Guaeshe Ученик (176), открыт 3 недели назад
Создаю свой кликер на юнити, новичек.
Сделал дизайн, создал функцию прибавления монет, но при создании магазина улучшений возникли проблемы. Первое улучшение у меня стоит 100, потом 2,потом 40, потом 80 и тд., а должно 100, 200, 300...
Тоже самое с улучшением , которое прибавляет +1монетке в секунду
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Game : MonoBehaviour
{
[SerializeField] int Score;
public int[] CostInt;
private int ClickScore = 1;
public int[] CostBonus;

public GameObject ShopPan;
public GameObject BonusPan;

public Text[] CostText;
public Text ScoreText;

private void Start()
{
CostInt = new int[2] { 10, 20 };
CostBonus = new int[1] { 0 };
StartCoroutine(BonusShop());
}

public void OnClickButton()
{
Score += ClickScore;
}
private void Update()
{
ScoreText.text = Score + "$";
}
public void ShowAndHideShopPan()
{
ShopPan.SetActive(!ShopPan.activeSelf);
}
public void ShowAndHideBonusPan()
{
BonusPan.SetActive(!BonusPan.activeSelf);
}

public void OnClickBuyLevel()
{
if (Score >= CostInt[0])
{
Score -= CostInt[0];
CostInt[0] *= 2;
ClickScore *= 2;
CostText[0].text = CostInt[0] + "$";
}
}

public void OnClickBuyBonusShop()
{
if (Score >= CostInt[1])
{
Score -= CostInt[1];
CostInt[1] *= 2;
CostBonus[0] += 2;
CostText[1].text = CostInt[1] + "$";
}
}


IEnumerator BonusShop()
{
while (true)
{
Score += CostBonus[0];
yield return new WaitForSeconds(1);
}

}
}
2 ответа
Денис Ревуцкий Ревуцкий Ученик (115) 3 недели назад
CostInt = new int[2] { 10, 20 };

Попробуй в этой строчке заменить 10, 20 на 100, 200 может что то да получится.
Sergio 2.1 Оракул (67256) 3 недели назад
 public class Game : MonoBehaviour  
{
[SerializeField] int Score;
public int[] CostInt;
private int ClickScore = 1;
public int[] CostBonus;
private int baseCost = 100; // Базовая стоимость
private int costIncrement = 100; // Шаг увеличения цены

// ... остальной код ...

private void Start()
{
CostInt = new int[2] { baseCost, baseCost }; // Начальные цены
CostBonus = new int[1] { 0 };
StartCoroutine(BonusShop());
}

public void OnClickBuyLevel()
{
if (Score >= CostInt[0])
{
Score -= CostInt[0];
CostInt[0] += costIncrement; // Прибавляем фиксированную сумму вместо умножения
ClickScore += 1; // Линейное увеличение бонуса
CostText[0].text = CostInt[0] + "$";
}
}

public void OnClickBuyBonusShop()
{
if (Score >= CostInt[1])
{
Score -= CostInt[1];
CostInt[1] += costIncrement; // Прибавляем фиксированную сумму
CostBonus[0] += 1; // Линейное увеличение бонуса в секунду
CostText[1].text = CostInt[1] + "$";
}
}
}
Похожие вопросы