Redukowanie "if" przy użyciu GetKeyDown

Redukowanie "if" przy użyciu GetKeyDown
AU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Przychodzę z pytaniem jakbym mógł zredukować ilość if w danym skrypcie:

Kopiuj
   if (Input.GetKeyDown("1")) SelectItem(0);
   if (Input.GetKeyDown("2")) SelectItem(1);
   if (Input.GetKeyDown("3")) SelectItem(2);
   if (Input.GetKeyDown("4")) SelectItem(3);
   if (Input.GetKeyDown("5")) SelectItem(4);
   if (Input.GetKeyDown("6")) SelectItem(5);
   if (Input.GetKeyDown("7")) SelectItem(6);

SelectItem zawsze wynosi o jedną jednostkę mniej niz naciśnięty klawisz

C#

ZD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2310
0
  1. Przekształcić string w integera mam nie uczyła ?

  2. Map / Dictionary

do 1. lub 2. dodac foerach / for

Ten kod ma GORSZY problem. Pobieranie czegoś z kolejki. BYĆ MOŻE w tym jednym jedynym przypadku to nie zachodzi, ale to jest bardzo zły wzorzec. w 99% przypadkach zaleca się jedno pobranie pod zmienna (disclaimer: nie znam unity, ani nie zamierza)

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6966
4
Kopiuj
for (int i = 1; i <= 7; ++i)
{
  if (Input.GetKeyDown(i.ToString()))
  {
    SelectItem(i - 1);
  }
}
MS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 328
2

Możesz tak:

Kopiuj
for (int i = 1; i <= 7; i++)
{
  if (Input.GetKeyDown(i.ToString())
  {
    SelectItem(i-1);
    break;
  }
}
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
2

@mstl: break spowoduje niezgodność z pierwotnym kodem. :P

CZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2541
0

Wpitol to w jakis kontener przechowujący stringi a inty będą indeksami. Nie trzeba będzie wykonywać żadnych konwersji ani robic ifologii.

ML
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 867
1

Nie rób nic. 7 linijek to nie problem, na pierwszy rzut oka widać co to robi. Wrzucisz to w jakąś pętlę i tylko zaciemnisz kod. Sztuka dla sztuki.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
3

Ludzie ogólnie boją się ifów (tak jakby gryzły), a przecież jest to najprostszy i wybitnie czytelny zapis branchowania — już ”bardziej czytelnie” się nie da. Podany w tym wątku oryginalny kod da się łatwo przerobić na pętlę, ale w obecnej postaci nie przeszkadza w niczym.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.