Wenn die gesamte "Spielwelt" tausendmal breiter ist als ein Ansichtsfenster, und wenn ich scene2d verwenden möchte, um Spielobjekte als Actor
s zu verwalten, sollte ich ein Stage-Objekt so breit wie die ganze Welt erstellen oder sollte Der Stage
ist ein Bereich um das aktuelle Ansichtsfenster, aber nicht die ganze Welt?
Mit anderen Worten, verbraucht ein Stage
mit größerer Breite und Höhe mehr Speicher, selbst wenn ich Objekte nur auf einem kleinen Teil im Darstellungsbereich rendere?
Ich glaube, du hast missverstanden, was genau ein Stage
ist. Eine Bühne hat nicht wirklich eine Größe. Wenn Sie keine Breite oder Höhe oder Stage
angeben, geben Sie nur die Breite und Höhe des Ansichtsfensters an. Das Ansichtsfenster ist wie ein Fenster, das nur einen Teil deiner Welt, aka Szene, zeigt. A Stage
ist ein 2D-Szenengraph und "wächst" mit deinem Actors
. Je mehr Schauspieler Sie haben, desto größer (speichermäßig) ist Ihre Bühne, aber es kommt nicht darauf an, wie weit Ihre Schauspieler tatsächlich verteilt sind. Wenn sie sehr weit verbreitet sind und Sie nur einen sehr kleinen Teil Ihres gesamten Stage
anzeigen, wird dies sehr effizient gehandhabt, da ein Szenengraph diesen riesigen Raum unterteilt, um sehr schnell entscheiden zu können, ob ein bestimmter ignoriert werden soll Schauspieler oder zeichne es auf dem Bildschirm.
Das bedeutet, dass ein Stage
genau das ist, was Sie für diese Art von Situation brauchen, und Sie sollten wahrscheinlich keine Probleme haben, FPS und Speicher. Aber natürlich, wenn Ihr Stage
das 1000-fache der Größe Ihres Ansichtsfensters ist und Sie selbst wissen, dass bestimmte Akteure nicht bald angezeigt werden, dann ist es möglicherweise sinnvoll, sie noch nicht zur Bühne hinzuzufügen .
Eine Stufe ist nur ein Wurzelknoten, der alle Akteure enthält. Es ist Aufgabe, Methoden für seine Kinder aufzurufen (wie zeichnen und handeln); somit haben nur die Anzahl und die Komplexität des Schauspielers einen Einfluss auf die Speicher- und Bildrate.
Für Ihre Situation ist sicherlich eine Keulungsmethode erforderlich. Am einfachsten wäre es, zu überprüfen, ob sich ein Darsteller im Darstellungsbereich befindet und ihn nicht überspringt. Erstellen Sie einen benutzerdefinierten Akteur und fügen Sie diesen Code hinzu: Quelle
Wenn Sie die Leistung noch weiter verbessern müssen, können Sie manuell entscheiden, was sichtbar ist und was nicht (z. B. wenn Sie die Kamera bewegen). Dies wäre schneller, weil all diese Culling-Berechnungen für jeden Frame für jeden Schauspieler ausgeführt werden. Also, obwohl es viel schneller ist, etwas Mathe zu tun, anstatt zu zeichnen, würde eine große Anzahl von Schauspielern eine große Menge unerwünschter Anrufe geben.