Widgeteingabe von Parent verhindern wenn ein Child aktiv ist

  • Hi zusammen.


    Ich habe da mal ein, wie soll ich sagen, Schönheitsproblem. Oder noch besser ein Eleganzproblem in meinem Hauptmenü.


    Und zwar folgendes. Hauptmenü, klar, mit Credits, Spielen, Beenden etc. Kennt ja wohl jeder.

    Jetzt habe ich zwischen das beenden noch die Abfrage ob der Spieler sicher ist geschaltet. Dazu habe ich ein neues UMG-Widget erstellt. Dieses wird mit Create Widget -> Add to Viewport angezeigt, wenn der Spieler auf beenden klickt. So wie man es halt macht.


    Dies wird allerdings als Extrafenster angezeigt, sprich die anderen Schaltflächen dahinter sind noch erkennbar, dummerweise auch noch benutzbar. Sie reagieren sowohl noch auf Hoveraktionen wie auch auf anklicken. Und das würde ich gerne verhindern so lange die Abfrage angezeigt wird.


    Zuerst hatte ich zwar überlegt Enabled bei allen Buttons aus zu schalten, wenn man auf beenden klickt. Allerdings sieht das im Blueprint unsauber aus, die Schaltflächen werden dann ausgegraut, was ich zwar per Farbänderung verhindern könnte, aber erscheint mir trotzdem doof, weil man dann ja wiederum nicht erkennt, ob die Buttons wirklich nicht auf enabled sind. Außerdem müsste ich die ganzen Buttons dann wieder einschalten, wenn der Spieler sich umentscheidet, was dann aber wieder vom Client zum Parent gehen müsste, was wiederum auf sehr unsauberen Umwegen nur machbar wäre.


    Nun die eigentliche Frage. Gibt es eine Möglichkeit das sauber und schön zu lösen?

  • Klar kann ich....


    So soll es in etwa aussehen.


    Einmal das Mainmenü


    Und dann die Beendenabfrage



    Wenn das Spiel wirklich beendet werden soll, wird natürlich alles beendet, nur solange das nicht feststeht halt nicht.


    Ich habe auch schon versucht die Buttonleiste eneabled und disabled zu stellen, dann würde der Code wenigstens ein wenig sauberer aussehen. Aber das hat genau gar keine Auswirkungen.


    In Windows würde ich das Childfenster dann mit Open Generic öffenen, dann hat das Parentfenster so lange die Klappe zu halten. Aber ein Widget ist ja leider kein Fenster im eigentlichen Sinne und Generic gibt es in Unreal soweit ich gesehen habe auch nicht.

  • Mach doch nen boolean „isWindowOpen“ den setzt du auf true wenn das Abfrage Fenster kommt und wieder false wenn der Spieler nein klickt. Dann machste auf alle Button routinen zuerst ein branch auf das boolean und wenn das true ist passiert gar nix ansonsten die normale Button Routine

  • So ähnlich habe ich es jetzt auch gelöst. Allerdings bleibt noch immer das Problem, dass die Buttons bei Disabled ausgegraut werden. Ic habe bereits festgestellt das man das auch nicht ändern kann. Sprich den Disabled-Style kann man nicht anpassen. Was mich etwas wundert, denn früher ging das wohl ohne Probleme.


    Na gut, aber ein wenig Grau im Hintergrund sollte ja meine kleinere Sorge sein, um die ich mich vielleicht irgendwann einmal konzentrieren kann.