Jump to content
Unity Insider Forum

Text vom Button ändern


Sir_Mathew

Recommended Posts

Schade das ich noch immer keine Antwort bekommen habe.

Wollte statt PlayerPrefs.SetString("taste",..... nur PlayerPrefs.SetString(stringTaste,... machen, damit ich in meinen String einen Passenden Namen erstellen kann und zur Laufzeit ändern kann, ohne fest "tast1" "taste2" etc. zu machen. Habs nun einzeln geschrieben, muss doch aber auch besser gehen.

Ich Probiere derzeit ganz schön viel rum und bin auf etwas gestoßen was mich irre macht.

Und zwar lade ich die gedrückte Taste mit Input.inputString in einen String.

Aber das Problem ist, das nicht jede Taste auf der Tastatur damit erfasst wird. Alles was als Tastenbezeichnung länger wie 1 Zeichen ist, wie Pfeil Tasten, die ja mit left und right bezeichnet sind. Kann man nicht irgendwie dieses Tasten auch auslesen irgendwie?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Input.inputString ist halt dafür da, dass du Tastatureingaben in Textfelder tun kannst. Damit kann der Benutzer dann Dinge eintippen. Deshalb kriegst du ein w, wenn du auf W drückst, und ein großes W, wenn du Shift+W drückst. Für Tastenbelgungen ist das gar nicht da. Ist auch nicht verwunderlich, ist ja auch ein String ;)

Leider gibt's da keine ganz einfache Variante. Vielleicht im neuen Input-System, das weiß ich nicht. Aber hier hast du einen guten Thread darüber, wie man das richtig machen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

So hab den neuen Input System getestet. erstmal dein Link hat mir erstmal gar nicht geholfen, aber schön zu sehen, das auch andere Foren sich gegenseitig

an die Gurgel(Hals) gehen lol. So vom neuen Input System hab ich schon öfter gelesen und ein Update von Unity hat mir das neue Input System nicht gegeben.

Ein blick auf den Asset Store Reiter in Unity selbst brachte mich zu neuen Assets, Coole Sache.

So kaum war das Input System installiert hab ich vieles Probiert. Aber Unity hat da viele Probleme Verursacht. Lange Projekt Speicherungen, Abstürze etc. Viele User berichten von ähnlichen Problemen. Selbst nach Deinstallation kommt mir Unity anders vor. Das Fenster umschalten von Visual Studio zu Unity direkt nach Script speichern dauert irgendwie nun Länger. Aber egal erstmal.

Ich schreib nun was aufwändigeres für die Tastenzuordnung.

z.b.

    if (Input.GetKeyDown(KeyCode.LeftControl) == true)
            {
                stringTaste = "left ctrl";
                intWhile = 1;
            }

Schreib ich für jede einzelne Taste eine Abfrage und Speichern dann in einen String.

diese frage ich in Update dann mit

  if (intButtonID == 0 && Input.GetKeyDown(stringTaste))
        {
            intTastePlayer[0] = 1;
        }
        if (intButtonID == 0 && Input.GetKeyUp(stringTaste))
        {
            intTastePlayer[0] = 0;
        }

ab und schalte einfach nen integer ein/aus.

Bevor der Ratschlag kommt wieso nicht If/Else.... geht nicht. Da mein Script über mehrer Instanzen verfügt und z.b. in der zweiten Instanz intButtonID immer 1 ist und

ich dann immer Else hab etc...

Was aber das schwerste ist von KeyCode auf einen String zu gehen. Das hat andere Schreibweisen für für ein und die Selbe Taste.

(Nachtrag: da fällt mir auf, wieso mach ich nicht alles als String... Keine Ahnung, probier ich mal aus)

(Nachtrag2: ah gerade Probiert und ja geht, Hab dann wenigstens die gleichen Namen.

weswegen ich aber erstmal KeyCode statt String verwende ist, das es beim String keine Scriptvorschläge gibt.

Ich gebe also Keycode.E und als vorschläge gibt alles mit E also z.b. Escape usw. gehe so nun alle Buchstaben  durch

bis ich alle Tasten abfragen habe:D.)

Da muss man erstmal Hinter steigen. KeyCode muss z.b. großes W und im String ein kleines w. Für Sondertasten wird aber heftig.

Da muss ich jede einzelne Taste im Unity Manual gucken. aus leftControl wird left ctrl, aus Mause0 wird mause 0, ja nicht nur klein geschrieben auch eine Lücke auf einmal dabei. 

Da saßen wohl 2 Programmierer auf verschiedenen Kontinenten ohne Internet und Telefon und jeder hat sich da andere Namen ausgedacht lol.

Was aber am ende noch Fehlt ist das ScrollRad der Maus. Das diese nicht +-1 ergibt ist mir Klar. vermutlich pro Maus Einrastung 120° oder sowas... Aber das würd ich schon

auf 1 bekommen bzw 1,2,3,4,5 und wieder 1 usw. Aber wie frag ich das ScrollRad beim drehen ab? kann dazu nix finden.

Das Input System will ich nicht verwenden. gibt es sowas wie KeyCode.MauseUp etc...?

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

 

Es tut mir leid, dir nicht direkt helfen zu können, aber dein Post ist, zumindest für mich, schwer bis nicht lesbar. Nutz doch bitte Codetags und versuche deine Gedanken etwas zu sortieren, dann kann ich dir besser folgen. Auch deine Rechtschreibung in Kombination dazu macht es echt schwer. Nimm es mir nicht krumm und verstehe es nicht als blöde Anmache. Eventuell bin auch ich der Geisterfahrer....

 

Christoph 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ne alles ok. Hab 2 Rechtschreibfehler gefunden. Meinst eher meine Grammatik, aber die ist auch ganz Ok.

Aber egal. Zum Anfang ging ich nur auf die Hilfe von @Sascha ein. In der Mitte ist eine Fortschritts Info. 

Zum Schluss kam ich auf eine kleine Frage, die lautet:

Kann man das ScrollRad an der Maus abfragen in welche Richtung ich es gerade drehe ohne den Input Manager z.b. mit GetKey ?

Meinst mit Codetags sowas?

das ist ein Code

 Wenn du was anderes meinst, sag es mir bitte.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...