Ezt hogyan lehetne megoldani c# ben?
Itt a kód:
Szeretném ha maradna a switch de ha tudtok szebb módszert akkor írjátok meg pls.
Azt szeretném kérdezni hogy hogyan lehetne megcsinálni úgy a feladatot,hogy elhagyom az if eket.Az az ezt a részt:
void Update()
{
if(Input.GetKeyDown(KeyCode.A))
myDownButton = 'A';
else
if(Input.GetKeyDown(KeyCode.D))
myDownButton = 'D';
else
if(Input.GetKeyUp(KeyCode.A) || Input.GetKeyUp(KeyCode.D))
myDownButton = '0';
Mondjuk hogy 70 lehetőség van amit a játékos használhat(Billentyűkombinációk) a játékban akkor én nem fogok írni 70 darab if et az biztos.
Biztos tudtok mondani nekem itt egy jobb megoldást arra,hogy hogy kezeljek le 70 lehetőséget.
Befejezetlen ötletem:
Eltárolom egy tömmbe a 70 lehetőséget(gombkombinációkat) majd utánna hogyan állapítom meg,hogy a felhasználó melyik gombot ütötte le a 70 közül?
Ehhez kéne valami ami figyeli a billentyűzetet és vissza adja a leütött karkatert hogy majd bele tudjam tenni egy változóba majd összehasonlítani ezt a tömmbel.
De ezt nem tudom megcsinálni mert nem akarok olyan folyamatot indítani ami figyeli az összes gombot.Csak azt a 70 lehetőséget akarom vele figyeltetni.
Tudtok valami szuper megoldást?
Érdekelne a daját ötletetek mert biztosan megvan erre a feladatra a legjobb módszer csak nem tudom mi az. :(










"Vagy ez, vagy megírod Eventekkel..."
Ez Unity, nem Winforms..
BTW általában az ilyen bonyolult if-else-eket meg switch-eket a Strategy pattern-el szokták kiváltani:
Más:
Nem igazán ismerem a Unity-t, úh. nem tudom, hogy van-e benne olyan függvény, ami az ellenkező logika alapján működik, azaz: simán visszaadja, hogy melyik key-t/key-kombinációt nyomta le a user, de ha van, akkor egyszerű a dolgod:
Minden key combóhoz írsz egy handlert(strategy-t), belepakolod őket egy Dictionary-be még a program betöltődésekor. A kulcs a key code lesz, és akkor kb. ennyiből fog állni az update függvényed:
(Persze a keycode-ot meg kell szerezned)
keyHandlers[keyCode].Execute();
Ha nem lehet másképp csinálni, mint ahogy te leírtad, akkor meg simán végigiterálsz a dictionary kulcsain, és mindegyikre lekéred az Input.GetKeyDown-t, és ahol true,
azt a handler-t lefuttatod.
Persze azt tudni kell, hogy a kód így szebb lesz, meg könnyebben karbantartható, de cserébe kicsivel lassabb is.
Bár elhanyagolható a performance impact, de azért tudjál róla.





További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!