Delay funktioniert nicht?!

  • Hallo Leute,


    ich habe ein sehr merkwürdiges Problem und wollte wissen, ob es jemand von euch schonmal hatte. In einem Widget geben Delay-Nodes keine Informationen mehr durch (Hat aber mal geklappt). Ich dachte erst an einen Fehler in der Schaltung, aber dann habe ich einen Test gemacht:


    Ich habe in dem besagtem Widget am EventTick(!) ein Delay von einer Sekunde dran gehangen, danach ein PrintString mit der Antwort "Hallo". Habe das besagte Widget mit einem Tastendruck aufgerufen. Es kommt KEINE Antwort. Hänge ich das PrintString nun VOR das Delay bekomme ich pro Tick eine Antwort.

    Dann habe ich ein Breakpoint gesetzt und siehe da: Das Delay zählt immer von 1 herunter bis zur 0 und zählt danach weiter, und so weiter, und so weiter, also so wie es soll... ABER es kommt hinten nichts raus.


    Andere Widgets/Blueprints funktionieren wunderbar.

    Kann man in den Widgets/Blueprint Delays deaktivieren? :O


    Liebe Grüße

  • Wie ich oben beschrieben habe, habe ich das delay nur zum TEST an das EventTick gehangen um auszuschließen, dass der Fehler durch einer meiner Schaltungen verursacht wird.. Das EventTick kann man mit "TickDisable aber trotzdem ausschalten ?


    Aber das hat nicht im geringsten meine Fragen beantwortet, warum in diesem Widget keine Delays mehr durchschlagen

  • Wie ich oben beschrieben habe, habe ich das delay nur zum TEST an das EventTick gehangen

    Für mich hat es sich eher danach angehört, dass du so oder so einen Delay am Tick-Event hattest, dafür hab ich dir ne Lösung gegeben, wenn du die nicht willst, auch gut...


    Wie Sleepy sagte, mach nen Screenshot, was man hier im Forum schon mehr als einmal gesagt hat, dann könnte man auch spezieller helfen^^

  • Zitat von Butter Fly Games

    Für mich hat es sich eher danach angehört, dass du so oder so einen Delay am Tick-Event hattest, dafür hab ich dir ne Lösung gegeben, wenn du die nicht willst, auch gut...

    Bitte nicht falsch verstehen ;) Dafür danke ich dir ja auch. Ich wünschte es gäbe Mimik und Gestik in Textform.. :D


    Gut dann folgen jetzt Screenshots:


    PlayerCharacter:

    Taste "T" wird gedrückt, Hauptmenü wird geöffnet...


    Widget:

    ... und es erscheint "Signal kommt an"



    An der Stelle musste ich das Delay herausnehmen, weil es nach "PlayAnimation" nicht mehr weiterging. Jetzt habe ich das Delay losgelöst und es geht nun weiter (halt nur ohne Verzögerung):

  • Sorry, aber der letzte Screenshot ist ziemlich sinnlos, der sagt eigentlich überhaupt nichts aus...


    Am ehesten hätte ich gesagt, dass was mit dem Playback Speed nicht stimmt, aber sagst ja, dass es weiter geht...


    Irgendwas an den Defaults geändert?



    Frage mich grad nur, wieso man ne Animation per Tick-Event abspielen sollte...

    • Offizieller Beitrag

    Butterfly hat recht. Der Tick wird jede Sekunde ausgelöst und der Delay so wie du ihn einstellst.


    Stell dir vor du sagst du einem Busfahrer er soll jede Stund prüfen und dann zwei 2 Stunden warten und losfahren wann kommt dann der Bus ? RIchtig nie.

    Bevor die Stunde rum ist und der Delay mit 2 Stunden ausgelöst werden soll, fängt der Busfahrer wieder von vorne an 1 Stunden zu warten.

    So wird niemals ausgelöst da er es niemals erreicht die 2 Stunden zu warten.


    Ich denke du solltest die Logik nochmal überdenken.


    Es kann aber auch sein, dass der Delay durch die Animation unterbrochen wird. Den eine Animation stoppt mit einem Delay auch sicherlich nicht.

  • Hä? Leute! :D


    Und nochmal (zum dritten mal): Das "EventTick" hängt NICHT an meiner Schaltung, sondern ist nur zum TESTZWECKEN benutzt worden, um euch zu demonstrieren, dass das Delay total blockt in diesem Widget. Die Animation hängt selbstverständlich NICHT am EventTick, sondern wird EINMALIG aufgerufen ;)


    Vergesst bitte das EventTick. Es geht mir schlicht und ergreifend nur darum, dass das Delay blockt

  • Bevor die Stunde rum ist und der Delay mit 2 Stunden ausgelöst werden soll, fängt der Busfahrer wieder von vorne an 1 Stunden zu warten.

    Naja, ganz so funktioniert das nicht, Delay löst schon aus, eben nach der eingestellten Zeit, aber ist ziemlich sinnlos, da das Tick-Event trotzdem ordentlich Performance frisst^^


    Das "EventTick" hängt NICHT an meiner Schaltung, sondern ist nur zum TESTZWECKEN benutzt worden, um euch zu demonstrieren, dass das Delay total blockt in diesem Widget.

    Du hast die ganze Zeit was von nem Tick-Event und Delay geschrieben, auf den Screenshots sah man ebenfalls nur das Tick-Event und kein anderes, daher war es nur logisch, davon auszugehen, dass die Animation mit nem Tick-Event ausgelöst wird...


    Mehr auf den Screenshots zeigen und evtl. nächstes mal direkt ein Screenshot dran hängen, würde echt helfen^^


    Vergesst bitte das EventTick. Es geht mir schlicht und ergreifend nur darum, dass das Delay blockt

    Irgendwas an den Defaults geändert?

  • Sleepy hat mit dieser Metapher den Nagel auf den Kopf getroffen. Unreal legt mit dem Delay eine Referenz zu dieser Funktion auf den Ingame Time Tick. Das Tick Event feuert deutlich schneller als der 1s Delay verstreichen kann und schiebt ihn nach hinten bevor er überhaupt einmal feuern kann. (Anderes Beispiel: Mutter kommt alle 5min in das Kinderzimmer und sagt ihrem Kind "In einer Stunde gibt es essen". Das Kind muss leider verhungern;).

    Das ist der Grund warum das Delay im Tick Event nicht wirklich funktioniert.


    Was mich an deinem Screen stutzig macht ist aber nicht die Animation vor dem Delay sondern das "Set Game Paused" dahinter wo du die Game Pause wieder deaktivierst. An der Stelle muss ich vermuten weil ich das noch nie getestet habe. Ich gehe mal von folgendem aus:


    1. Du pausierst das Game bevor du Delay aktivierst

    2. Delay ist an die Ingame Time gebunden (ka ob Unreal das wirklich so macht)


    In diesem Fall würde es niemals weiter gehen da eine Sekunde Ingame Time in der Pause schlecht weiter laufen kann.


    Ich vermute mal weiter das du diesen Delay nur eingebaut hast um auf das Ende der Animation zu warten? Falls ja benutz mal die Node: https://docs.unrealengine.com/…hFinishedevent/index.html und lass das Delay komplett weg.


    Wie gesagt, bin mir hier an der Stelle nicht sicher. Wäre also Super wenn du uns sagen könntest ob du das Game wirklich pausierst:D.


    Gruss Veelos

    • Offizieller Beitrag

    Dann habe ich ein Breakpoint gesetzt und siehe da: Das Delay zählt immer von 1 herunter bis zur 0 und zählt danach weiter, und so weiter, und so weiter, also so wie es soll... ABER es kommt hinten nichts raus.


    Nochmal und sorry aber ich bin verwirrt:

    1.Der Delay funktioniert ?

    2.DIrekt nach dem Delay kommt ein Printstring der aber nicht ausgelöst wird ?


    Das würde ja heißen das entweder der Delay oder der Printstring nicht funktioniert oder wie ?

  • Das ist der Grund warum das Delay im Tick Event nicht wirklich funktioniert.

    Und nochmal ... es funktioniert, da muss ich Lalilu leider Recht geben, ob es Sinn macht, ist was anderes, da das Tick-Event eben extrem Performance frisst^^


    Ein Freund hatte mal bei allen seinen Actor die kein Tick verwenden, den Tick komplett ausgeschalten, er hatte am Ende 10% mehr Performance...

    Denn selbst wenn kein Tick-Event verwendet wird und das Event entfernt wurde, es tickt munter weiter.


    Delay ignoriert jeden Call wenn bereits ein Countdown läuft.

    Das was ihr ( Sleepy  Veelos ) meint, ist das "Retriggerable Delay" ^^


    In diesem Fall würde es niemals weiter gehen da eine Sekunde Ingame Time in der Pause schlecht weiter laufen kann.

    Genau da war ja was, fällt mir grad erst ein, wenn du es erwähnst^^


    Jedoch nicht in Widgets verfügbar, hehe


    Kannte ich auch noch nicht, danke^^

    • Offizieller Beitrag

    Geloscht Okay bei Ticks kann das sein aber wie sieht es mit Unterbrechungen beim Abspielen von Sounds oder Animationen aus ?


    Was passiert zb wenn man jede Sekunde eine Animation abspielt, die 2 Sekunden dauert ?

    Wird die Animation nach einer Sekunde unterbrochen und fängt von vorne an, oder wird die 2 Sekunden Animation abgespielt und danach wieder eine Sekunde gewartet ?


    Egal wie, das ist der in Logik ein Problem.


    Ich hab jedenfalls keine Idee woran es liegen kann außer der Latenz Geschichte wie auch immer sie ausgelöst werden.


    Lalilu

    Teste doch mal ob das Problem auch ohne das Abspielen der Animation auftritt weil dann kannst du du defintiv ein oder ausschließen ob es daran liegt.

    Im Internet unter dem Begriff "Delay not working" habe ich jedenfalls ähnliche Probleme gefunden.


    Das ist ein bisschen wie die Frage was gab es zuerst: Huhn oder Ei ? :)

  • Irgendwas an den Defaults geändert?

    Nein gar nichts, das ist ja gerade das merkwürdige. Das selbe Phänomen trat jetzt auch noch bei einem weiteren Blueprint bei mir auf. Das Delay BLOCKT. Es zählt herunter aber am Hintern kommt nichts mehr raus. Was ist das für ein Müll bitte? Erst funktioniert es und am nächsten Tag blockt ein DELAY!!


    Was mich an deinem Screen stutzig macht ist aber nicht die Animation vor dem Delay sondern das "Set Game Paused" dahinter wo du die Game Pause wieder deaktivierst. An der Stelle muss ich vermuten weil ich das noch nie getestet habe. Ich gehe mal von folgendem aus:

    Ja, vorher pausiere ich das Spiel. Mit der Schaltung auf dem Screenshot möchte ich es wieder Ent-Pausieren. Was auch super funktioniert ohne das Delay dazwischen. (Hat wie gesagt auch vorher mit Delay funktioniert, aber die Engine hat wohl kein Bock mehr auf Delays in meinem Projekt...)


    Das ist der Grund warum das Delay im Tick Event nicht wirklich funktioniert.

    Das was du/ihr beschreibt, ist ein Retriggerable Delay. Ein normales zählt trotzdem herunter, egal was für ein Signal in der Zwischenzeit ankommt.


    Falls ja benutz mal die Node: https://docs.unrealengine.com/…hFinishedevent/index.html und lass das Delay komplett weg.

    Danke dir :) Werde ich mal versuchen. Trotzdem löst das meine Sorge nicht, dass sich jetzt scheinbar in sämtlichen Blueprints meine Delays verabschieden.


    Teste doch mal ob das Problem auch ohne das Abspielen der Animation auftritt weil dann kannst du du defintiv ein oder ausschließen ob es daran liegt.

    Habe ich getestet. Ohne das Abspielen der Animation geht es trotzdem nicht weiter. Es ist, als ob ich ein "Branch" hin gesetzt habe, das immer blockt. Das Delay, egal wo es sich befindet, gibt kein Signal mehr aus...


    Im Internet unter dem Begriff "Delay not working" habe ich jedenfalls ähnliche Probleme gefunden.

    Jap das habe ich auch gesehen, nur gibt es dort auch keine Lösung für. Habe mir auch alte Backups gezogen und da ist das Problem auch vorhanden, obwohl es zum damaligen Zeitpunkt noch keine Probleme gab... Ist jetzt das komplette Projekt im Eimer oder wie? Das kann doch echt nicht sein

  • Nein gar nichts, das ist ja gerade das merkwürdige.

    Klick mal irgendwo in deinem Event Graph hin, dann STRG+A, damit alles markiert ist, danach rechtsklich auf ein beliebiges Node und "Refresh Nodes"


    Vielleicht auch mal das Delay entfernen und neu setzen (nicht nur "Break Links", sondern komplett neu rein machen)^^


    Mehr fällt mir dazu grad auch nicht ein...


    Ist jetzt das komplette Projekt im Eimer oder wie?

    Hast du irgendwelche Plugins neu installiert?


    Benutzt du schon die neuste Engine-Version?

    Was passiert, wenn du das Projekt mit einer neuen Version öffnest?

  • Wenn du unbedingt eine Verzögerung rein haben willst, dann starte lieber ein Timerevent. Das ist sicherer.

    Ein TimeEvent kannte ich noch nicht. Habe es mir mal angesehen. Danke für den Hinweis. klappt gut damit :)



    Klick mal irgendwo in deinem Event Graph hin, dann STRG+A, damit alles markiert ist, danach rechtsklich auf ein beliebiges Node und "Refresh Nodes"

    Hab ich getan, aber hat nichts gebracht. Pluigins habe ich auch nicht installiert. Allerdings habe ich das Problem auf einem anderen Rechner nicht mehr.. Das ist anscheinend ein Engineproblem. Werde mal die Unreal Engine neu installieren :) Ich habe die Version 4.25.3 Installiert