Ich implementiere ein Messaging-System und frage mich, wie ich mit Ereignissen umgehen soll. Soll ich sie posten und an die entsprechenden Hörer senden, sobald ich sie erhalte, oder sollte ich sie in die Warteschlange stellen und nur versenden, wenn ich dazu aufgefordert werde (höchstwahrscheinlich von der Hauptspielschleife)?
Bearbeiten: Weitere Infos
Mein Spiel ist ein 2D-Plattformer, daher wird die Leistung nicht sehr schwer zu erreichen sein. In Anbetracht dessen, was Roy T. gesagt hat , könnte ich das Ereignis genauso gut senden, sobald es veröffentlicht wird. Es scheint nicht nötig zu sein, es in die Warteschlange zu stellen (es sei denn, ich vermisse natürlich etwas).
quelle
Möglicherweise möchten Sie beide verfügbar haben und die richtige für den aktuellen Listener verwenden. Beispielsweise möchte Ihr Entitätssystem möglicherweise sofort wissen, wie ein Feind entfernt werden kann, damit es nicht aktualisiert und verschoben wird. Ihr Inventarsystem kann jedoch möglicherweise warten, da der Spieler den Gegenstand erst im nächsten verwenden kann Rahmen sowieso.
Beim Binden an das Ereignis sollte der Listener also angeben, wann er aktualisiert werden soll:
quelle
C # -Ereignis-Listener werden sofort nach Eintreten des Ereignisses in Abonnementreihenfolge aufgerufen. Ich würde dasselbe tun. Ich benutze diese in meinem 2D-Spiel und es funktioniert bisher großartig.
quelle