Kezdőoldal » Számítástechnika » Programozás » Ezt hogyan lehetne megoldani...

Ezt hogyan lehetne megoldani c# ben?

Figyelt kérdés

Itt a kód:

[link]


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. :(


2013. márc. 12. 01:57
 1/3 anonim ***** válasza:

Vagy ez, vagy megírod Eventekkel...

[link]

[link]

2013. márc. 12. 08:34
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

"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:

[link]


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.

2013. márc. 12. 12:17
Hasznos számodra ez a válasz?
 3/3 Pj0tr ***** válasza:
Nem vágom a Unity-t, de ha a KeyCode egy enum típus akkor így is meg tudod csinálni: [link]
2013. márc. 12. 13:45
Hasznos számodra ez a válasz?

További kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!