Create Widget Verständnisfrage

  • Hallo, ich hätte mal folgende Anfängerfrage zu der Node "create Widget".
    Wenn ich durch Interaktion ein Widget anzeigen lasse durch "create Widget und "add to viewport" und den durch eine Interaktion wieder entferne mit "remove from parent", wird dabei das Widget auch komplett entfernt oder existiert es irgendwo im Speicher oder Level oder sonstiges??
    Weil ich habe mal bei einer Fehlersuche einen Print String am Return Node vom Create Wigdet gemacht und dort zeigt er mir dann an jedesmal wenn ich ein Widget erstelle sowas wie "widget_01" "widget_02" usw. Daher meine Frage wieso? Oder reicht remove from parent nicht aus und muss es irgendwie löschen?

  • Ne Referenz bleibt im Speicher, aber das Widget ist nicht mehr aufrufbar.


    Wenn du es richtig machen willst, kannst einfach die Visibility auf "hidden" setzen, wenn es nicht mehr gebraucht wird und wieder auf "visible", wenns geöffnet wird ^^


    Bei mir wirds als Workaround von nem Bug, immer wieder entfernt und neu erstellt, weil wenn ichs einfach nur auf "hidden" setze und beim öffnen auf "visible", kann ich keine Items mehr verschieben...

  • So habe ich immer das selbe Widget, oder versteh ich da was falsch?

    Nach meinem Verständnis ja.
    Ich habe es so dass ich das Widget nicht einmalig durch das BeginPlay erstelle sondern jedesmal beim Interagieren mit einer Taste und gleichzeitig anzeigen lass, beim loslassen verschwindet halt die Anzeige.
    Vielleicht sollte ich es wohl eher so machen. :D
    Dankeschön. Wäre ich gar nicht drauf gekommen.

  • Dann hatte ich noch folgenden Bug.

    Wenn ich mein Widget created habe und anzeigen lies, konnte ich es nicht mehr entfernen...
    Dann hab ich irgendwo gelesen dass es sein kann dass sich ein Widget mehrfach erstellt hat. Eins würde halt weg gehen durch remove from parent, sieht man aber nicht, weil es aufeinmal mehrere gibt.


    Dann hab ich ein DoOnce vorgeschaltet und funktionierte dann. Irgendwann hab ich spaßeshalber das DoOnce wieder entfernt weil ich nicht nachvollziehen konnte warum dort gleichzeitig mehrere Widgets erstellt werden... Und siehe da, geht auf einmal.


    Kennt wer diesen Fehler? Oder kann es mir erklären wieso es vor kommt dass manchmal ein Widget doppelt oder mehrmals erstellt wird?

  • Hallo zusammen


    Remove Widget löscht das erstellte Widget nicht, es wird nur nicht mehr angzeigt. Selbst wenn du eine Variable hast, diese auf nullptr setzt, wird das Widget nicht zwingend gelöscht. Die Engine merkt irgendwann, dass das Widget nicht mehr gebraucht wird und gibt das Memory wieder frei durch den Garbage Collector. Wenn es sofort löschen willst musst du das selber machen.


    Das es jetzt bei dir doppelt angezeigt und nicht entfernbar ist klingt danach, dass du im Multiplayer Modus bist und dann auf dem Listen Server das Ding zweimal erstellst (durch Begin Play Play) und hinzufügst. Ist jetzt nur ein Wild Guess, kann das sein?


    Gruss

  • Das es jetzt bei dir doppelt angezeigt und nicht entfernbar ist klingt danach, dass du im Multiplayer Modus bist und dann auf dem Listen Server das Ding zweimal erstellst (durch Begin Play Play) und hinzufügst. Ist jetzt nur ein Wild Guess, kann das sein?

    Ne mit Multiplayer mach ich gar nichts.



    So sah es bei mir aus. Jetzt ist es mir auch logisch dass jedesmal beim Drücken ein neues Widget erstellt wird :D
    Aber das mit der Dopplung weiß ich noch nicht. Also bei der gleichen Schaltung ging das remove from parent nicht mehr beim releasen der Taste. Erst wenn ich ein DoOnce vor dem create anknüpfe. Danach hab ich es wieder entfernt und ging trotzdem aufeinmal.