Cast to HUD

  • Hat sich erledigt, aber eine andere Frage:

    Habe da etwas nach einem Youtubevideo nachgebaut, funktioniert ganz gut. Habe das Ganze nun nochmals erstellt(ich gebe zu ein wenig abgeändert) und funktioniert nicht mehr. Vielleicht könnt ihr mir helfen:

    Das Nachgebaute:


    und das Abgeänderte:


    Das erste zeigt er mir normal an, wenn ich Tab drücke, das zweite sollte er mir anzeigen, wenn ich Q drücke.


    Dazu diese zwei ON key down events:


    Wie gesagt, die Blueprints vom ersten und dritten screenshot funktionieren, die Blueprints vom zweiten und vierten nicht. Weiß leider keinen Rat mehr. Habe ein wenig herumprobiert, aber bei mir trägt es keine Früchte.

  • Also, wenn ich mir die beiden ersten BPs nebeneinander lege gibt es da schon Unterschiede. Ich konnte es ja nun leider nicht nachprogrammieren, um mal ein Gefühl dafür zu bekommen und nachvollziehen zu können, was du da gemacht hast.


    Aber, auffällig ist, beim zweiten Castest du auf den Play Character, also im ersten Cast, beim ersten BP auf self.


    Ich gehe jetzt aber einfach mal davon aus, dass du dafür Gründe hattest.


    Wo ich mir nicht ganz sicher bin, das erste BP bezieht sich doch eher auf ein Widget, das zweite auf einen Actor?


    Aber, was ich als Erstes mal probieren würde, hast du zwei BPs mit On Key Down-Abfrage? Also willst du beide Abfragen verwenden?


    Wenn ja, dann pack die Abfrage welche Taste gerade gedrückt wurde in ein BP. Dazu gibt es mehrere Möglichkeiten. Da wo du abfragst, ob die Taste jetzt Tab ist, kannst du nach On Key Down ja noch eine weitere Abfrage machen, eben halt ob Q gedrückt wurde, und dann wieder mit Branch, wie gehabt, weiter.


    Was ich wesentlich sauberer empfinde, wenn du unter den Projekteinstellungen halt, eine Taste Inventory definierst, diese dann Tab zuordnest, und eine Charaktereinstellung, dieser dann Q zuweist und diese Events dann direkt abfragst.


    Dazu gehst du unter Projekt Settings auf Input, dann auf Action Mappings auf + für Hinzufügen.



    Und mit dem Event kannst du die Tastenabfrage dann sehr gut in einem Actor-BP abfragen.


  • Dazu diese zwei ON key down events:

    Ich hab bei meinem Projekt rausgefunden, dass der Function Override "OnKeyDown", keine Funktion hat...

    Stattdessen hab ich "OnPreviewKeyDown" benutzt, das funzt problemlos ^^


    Ansonsten würde ich aber wie Tomarr schrieb, alles mit Inputs im BP machen, hab die Key-Down-Function inzwischen auch ersetzt.

  • Ja, wenn man etwas auf die eine Art unbedingt machen möchte, sieht man leider nicht dass es auch anders gehen kann.

    Wieder einmal danke. Hätte ich auch selber drauf kommen können. Dachte mir nur ich versuche, es so wie im Tutorial, denn da hat es ja funktioniert. Dass man es auch auf die übliche Weise machen kann, hab ich wohl vergessen.


    Danke, danke. Alles Gute euch Beiden und viel Erfolg

  • Nur noch einen dumme Frage: Er öffnet mir zwar das CharacterSheet mit der Taste, aber schließen kann ich es nicht. Habe einen Button eingebaut, bei dem funktioniert das einwandfrei. Habe es mit einem isvalid/CharacterSheet und einem Branch versucht. Öffnen kann ich es, aber schließen nur mit dem Button.

    Schönen Abend euch allen

  • Ne ist Q für das CharacterSheet. Tab nutze ich für das InventroyComponent. Da funktioniert alles einwandfrei.

    Hätte ich wahrscheinlich schreiben sollen. Der Focus dürfte passen, da der Button funktioniert. Aber die Taste funktioniert nicht.

    Bei mir sieht das so aus:

    Und keine Sorge, mit mir wirst du nie arbeitslos :)

  • Also Moment. Du benutzt Tab für Inventar auf und noch einmal Tab für Inventar zu.

    Und Q für Charakterbogen auf und noch einmal Q für Charakterbogen wieder zu.


    Richtig so weit?


    Dann machst du hinter das Tab-Event halt ein Flipflop mit A Inventar auf und B wieder zu.


    Das Gleiche machst du dann halt noch einmal mit der Taste Q-Event, nur halt mit dem Charakterbogen.


    Wenn du jetzt auch noch vermeiden möchtest, dass es zum Beispiel aus Versehen zu Überlappungen der angezeigten Widgets kommt, dann könntest du dein HUD-Widget zum Beispiel mit einem Fullscreen Widgetswitcher ausstatten. Auf Index 0 legst du dann zum Beispiel das IG-HUD, Auf Index 1 das Pausemenü, Index 2 Inventory, Index 4 Charakterbogen usw.


    Dann brauchst du nach dem FlipFlop nur entsprechenden anzuzeigenden Index ändern, indem du hinter A einfach den Index auf die entsprechende Indexnummer setzt, und auf B immer Index 0 um dann immer zum IG-HUD zu kommen.

  • Dann machst du hinter das Tab-Event halt ein Flipflop mit A Inventar auf und B wieder zu.

    Ich mag Flipflop nicht, die gleiche Funktion hast, wenn du ein Bool setzt und auf Basis dessen, alles machst was du machen willst, das führt auch zu keinen Fehlern...

    Man darf nur nicht vergessen, das Bool immer je nach Funktion, auf true/false zu setzen, sonst hat man wieder das Flipflop Problem, hehe


    Dieses Bool brauchte ich sowieso, damit man nicht mehr rum laufen kann, während das GUI geöffnet ist.


    MacArmand Du brauchst auch nicht immer und immer wieder ein neues Widget erstellen, wenn du "RemoveFromParent" machst, bleibt die Referenz trotzdem erhalten, sofern du sie nicht löschst, einfach beim nächsten öffnen, wieder "AddToViewport" machen, ohne das Widget nochmal zu erstellen ^^


    So sieht das ganze bei mir aus:

    Das Character Preview ist fürs Inventar um den Character dort anzuzeigen (hatte keine Lust, es fürn Screenshot zu entfernen), ich zerstöre den Actor nachm schließen des GUI wieder, damit er nicht unnötig Resourcen frisst, wegen RenderTarget.

    Der Input-Mode wird bei mir bei jeder Aktion, die was mit HUD oder GUI zu tun hat, erneut gesetzt, da ich ohne, auch irgendein "Focus" Problem hatte...



    Wenn du nen WidgetSwitcher drin hast, kannst einfach den Index abfragen und wenn es der richtige ist, wird das GUI geschlossen, wenn es der falsche ist, auf den richtigen gesetzt (hab ich noch nicht drin) ^^

  • Ich mag Flipflop nicht, die gleiche Funktion hast, wenn du ein Bool setzt und auf Basis dessen, alles machst was du machen willst, das führt auch zu keinen Fehlern...

    Man darf nur nicht vergessen, das Bool immer je nach Funktion, auf true/false zu setzen, sonst hat man wieder das Flipflop Problem, hehe

    Ja, also ein FlipFlop selber nachzuprogrammieren ist ja wirklich keine Kunst, und klar, man kann es im Eigenbau auch noch gerne erweitern, mit gewissen Variablenstellungen usw. auch gewisse "Schaltsicherheiten" einbauen usw.


    Vielleicht ergibt das in meinem Beispiel mit dem Widgetswitcher sogar mehr Sinn, weil den hatte, ich halt spät abends noch einmal so als spontane Kurzidee eingeworfen, wobei ich mir gar keine Gedanken darüber gemacht hatte, wie FlipFlops sich eventuell verhalten, wenn man jetzt zum Beispiel das Inventar aufruft und direkt danach halt das Charakterblatt, ohne zwischendurch wieder auf das IG_UHD zu gehen. Da würde es zum Beispiel wahrscheinlich mehr Sinn ergeben, wenn man zum Beispiel mit einer boolschen Sperrvariablen, die man auf True setzt, wenn irgendeine andere Ansicht als das IG_HUD zu sehen ist. Also verfeinern kann man wie immer immer (Sieht geschrieben irgendwie merkwürdig aus, aber egal), aber erstmal geht es ja um die Umsetzungsmöglichkeiten.


    Wobei ich mir, auch wenn ich mir bewusst bin, dass es für jede Lösung immer mehrere Ansätze gibt, irgendwie die Frage stelle, warum der Erstelle des Tutorials, welches am Anfang herbeigezogen wurde, etwas so kompliziert umsetzt, obwohl die Engine da ja von sich aus schon wesentlich komfortablere und auch übersichtlichere Möglichkeiten bereitstellt.

  • Hallöchen, erstmals danke für die ganze Aufopferungsgedanken. Wenn ich ehrlich gestehen muss, blicke ich da nicht mehr durch, ist aber auch egal, denn ich habe mein Problemchen anders gelöst. Habe das Charactersheet-Widget an das INventarwidget im Design-Tab eingefügt. Wollte mir das zwar am Anfang ersparen, weil ich das Tutorialcontent nicht ändern wollte, aber eigentlich war es genau das was ich machen wollte, denn man sollte schließlich auch zwischen dem INventar und dem Charactersheet Items verschieben können. Denke so ist das einfacher. Wenn ich das INventar noch mit ein paar Images verfeinere sieht es sicher nicht schlecht aus. Bräuchte aber wahrscheinlich noch ein passendes Font dazu. Sollte Fantasy werden.

    Dass mit dem Flip-Flop habe ich ansatzweise ausprobiert. Er hat mir die Widget zwar geöffnet konnte sie dann aber weder mit Tab noch dem Button schließen. Bin vermutlich zu doof für Flip-Flop.

    Dass mit dem Tab-Key funkt immer noch nicht,egal was ich nun anstelle. Habe das Keydown-Event komplett verworfen und stattdessen wie von euch empfohlen im Player-Actor ein Tabkey-Event zum Aufrufen der oben gezeigten Funktion Toggle-Inventory. Kann das Widget mit dem Button schließen aber nicht mit Tab. Warum? Mir ein Rätsel. Werde bei Zeiten weiter daran herumprobieren. Vorerst bin ich zufrieden, denn eigentlich sollte das Aufrufen des INventars im Spiel sowieso über einen Button laufen und nicht über Tab, deswegen gar nicht so wichtig. War einfach nur interessehalber um zu wissen, warum das Get validated nicht funktioniert.


    Auf jeden Fall ganz herzlichen Dank, hab hoffentlich nicht zu sehr eure Nerven strapaziert und wünsche euch einen angenehmen ausklingenden Feierabend, vielleicht bis bald, euer Marc :)


    P.s: Wie wäre es mit einer Kaffeekasse für all euch denkenden Helferlein :sparki:

  • Bräuchte aber wahrscheinlich noch ein passendes Font dazu. Sollte Fantasy werden.

    Guck mal da, die meisten sollten auch für kommerzielle Zwecke zur Verfügung stehn (Lizenz checken), hab bisher aber keins gefunden, wo man was in die Credits schreiben muss, oder zahlen: https://fonts.google.com/


    Bin vermutlich zu doof für Flip-Flop.

    Nicht nur du ^^


    Kann das Widget mit dem Button schließen aber nicht mit Tab. Warum? Mir ein Rätsel.

    Versuchs mal mit dem InputMode setzen, ich mache das bei jeder Aktion, die was mit Widgets zu tun hat, egal ob Button klicken oder Item verschieben oder Map verschieben, ohne das gehts schließen mit Tab, irgendwie nicht...

    P.s: Wie wäre es mit einer Kaffeekasse für all euch denkenden Helferlein

    Musst Sleepy fragen, ob er Bank spielen will ^^


    Ich könnte dir auch einfach meine Amazon-Einkaufsliste schicken, wenn du sooo viel Kohle zum verschenken hast...

    Hab erst vor paar Tagen erfahren, dass darüber viele Streamer, Geschenke erhalten.

    Frag mich aber nicht wie das funzt...

  • Habe es mit preview on key down hinbekommen. Die Seite mit den Fonts werde ich mir noch ansehen.


    Achja, Kohle hab ich nicht so viel, aber ein schlechtes Gewissen. Immer komme ich her um zu fragen und kann selber eigentlich hier nichts richtig dazu beitragen. Deswegen die Idee mit der Kaffeekasse. Naja, vielleicht kann ich ja einmal weiterhelfen, wenn ich ein wenig mehr lernen würde.


    Danke auf jeden Fall euch allen und alles Gute und einen schönen Tag euer Marc :P