Sir_Mathew Geschrieben 14. Januar 2021 Autor Melden Share Geschrieben 14. Januar 2021 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 More sharing options...
Sascha Geschrieben 15. Januar 2021 Melden Share Geschrieben 15. Januar 2021 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 More sharing options...
Sir_Mathew Geschrieben 19. Januar 2021 Autor Melden Share Geschrieben 19. Januar 2021 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.) 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 More sharing options...
chrische5 Geschrieben 19. Januar 2021 Melden Share Geschrieben 19. Januar 2021 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 More sharing options...
Sir_Mathew Geschrieben 19. Januar 2021 Autor Melden Share Geschrieben 19. Januar 2021 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 More sharing options...
Sir_Mathew Geschrieben 21. Januar 2021 Autor Melden Share Geschrieben 21. Januar 2021 Hab inzwischen rausgefunden das Input.GetAxis("Mouse ScrollWheel") das richtige ist. Aber mal eine andere Frage. Wenn ich 2 Children des Typs Text habe, wie kann ich beide mit name.GetComponentInChildren<Text>().text die einzelnen abfragen, oder macht man das anders? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 21. Januar 2021 Melden Share Geschrieben 21. Januar 2021 Es gibt GetComponentsInChildren, das gibt dir ein Array mit allen Komponenten des gesuchten Typs zurück, die in diesem GameObject oder einem seiner Kinder sind. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sir_Mathew Geschrieben 21. Januar 2021 Autor Melden Share Geschrieben 21. Januar 2021 vor 3 Stunden schrieb Sascha: Es gibt GetComponentsInChildren, das gibt dir ein Array mit allen Komponenten des gesuchten Typs zurück, die in diesem GameObject oder einem seiner Kinder sind. Danke, hat nach einigen probieren wunderbar funktioniert. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.