• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Button włączający się tylko przy odpowiedniej wartości c#

Object Storage Arubacloud
0 głosów
125 wizyt
pytanie zadane 2 listopada 2022 w C# przez Damian Marutschke Nowicjusz (120 p.)

Hej! Z góry powiem że jestem początkujący i nie wiem jeszcze za wiele ale staram sie jak moge. 
zacząłem się uczyć w Unity korzystając z c#. od około tygodnia robię grę clicker i nastałem mały problem. 
chodzi o to że chciałbym aby odpowiedni button przypisany do skryptu Odpalał albo podświetlał, gdy będę miał odpowiednią wartość coinsow. 
no tylko jest mały problem, kod działa do pewnego momentu, Początkowa kwota przy której można zakupić "boosta" to 50 i co każde kupienie wzrasta o 30. Ale jesli nie bede mial odpowiedniej ilosci coinsow i klikne guzik to nagle Wszystko wariuje i nawet jesli potem zdobede okreslona ilosc coinsow to buttona nie moge juz kliknac

 public void Boost1Clicked() // Skrypt do Pierwszego Boosta +1
    {
        if( coins >= BoostPrize1)
        {
            coins = coins - BoostPrize1;
            coinUI.text = coins.ToString();
            boost += 1;
            BoostPrize1 = BoostPrize1 + 30;
            myPurchaseBoost1.interactable = true;
        }
        else
            myPurchaseBoost1.interactable = false;
    }  

1 odpowiedź

+1 głos
odpowiedź 2 listopada 2022 przez VBService Ekspert (252,740 p.)
edycja 3 listopada 2022 przez VBService

Ale jesli nie bede mial odpowiedniej ilosci coinsow i klikne guzik to nagle Wszystko wariuje i nawet jesli potem zdobede okreslona ilosc coinsow to buttona nie moge juz kliknac

dzieje się tak, dlatego że masz "włącznie i wyłącznie" interakcji z przyciskiem w samym przycisku, w momencie kliknięcia przycisku gdy niespełniony jest warunek

if(coins >= BoostPrize1)

przycisk się "blokuje"

myPurchaseBoost1.interactable = false;

w ten sposób nie można już w niego kliknąć co powoduje, że kod się nie może wykonać. Dla testu spróbuj tak

public void Boost1Clicked() // Skrypt do Pierwszego Boosta +1
{
    if(coins >= BoostPrize1)
    {
        coins = coins - BoostPrize1;
        coinUI.text = coins.ToString();
        boost += 1;
        BoostPrize1 = BoostPrize1 + 30;
    }
}

"wadą" tego rozwiązania jest to, że przycisk jest "klikalny" niezależnie od posiadanych coin-sów.

Można np. zapisać osobną funkcję, która by sprawdzała, czy buton może być

myPurchaseBoost1.interactable = true;

lub

myPurchaseBoost1.interactable = false;

coś w stylu

public void ToggleButtons()
{
    if (coins >= BoostPrize1)
        myPurchaseBoost1.interactable = true;
    else
        myPurchaseBoost1.interactable = false;

    ...
}

public void Boost1Clicked() // Skrypt do Pierwszego Boosta +1
{
    coins -= BoostPrize1;
    coinUI.text = coins.ToString();
    boost += 1;
    BoostPrize1 += 30;
    ToggleButtons();
}

public void GenerateCoinsClicked()
{
    ...

    ToggleButtons();
}

 

 

P.S.

Z góry powiem że jestem początkujący i nie wiem jeszcze za wiele

Beginner Scripting

 

Learn about programming for game development, from the very beginning with these easy to follow video tutorials.

 

1
komentarz 3 listopada 2022 przez Damian Marutschke Nowicjusz (120 p.)
aaa, Dziekuję Ci bardzo, totalnie bym na to nie wpadl :/  
Bede musial sie pobawic w tym Unity Learn, Dzieki bardzo jeszcze raz :)

Podobne pytania

0 głosów
7 odpowiedzi 12,108 wizyt
pytanie zadane 12 czerwca 2018 w C# przez Hipolit Roszkowski Obywatel (1,480 p.)
0 głosów
2 odpowiedzi 255 wizyt
pytanie zadane 20 lutego 2023 w C# przez marek.nowak404 Nowicjusz (220 p.)
0 głosów
1 odpowiedź 140 wizyt
pytanie zadane 25 grudnia 2019 w C i C++ przez kondron Nowicjusz (120 p.)

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...