In meinem 2D-Block-basierten Spiel versuche ich, eine Datenstruktur zu implementieren, in der Entitäten auf eine Weise gespeichert werden, die Folgendes ermöglicht:
Direkte Auswahl anhand der Koordinate.
Wiederholung
Die Iteration ist auf einen Bereich beschränkt
Ich dachte an diese Lösungen:
Für 1,3 dachte ich, dass ein zweidimensionales Array von Entitätskoordinaten geeignet wäre, aber ich habe bereits ein zweidimensionales Array von Blockkoordinaten und möchte auch kein anderes haben. Und diese Lösung ist mit 2 nicht geeignet, es gibt zu viele Lücken beim Iterieren des Arrays und dies ist ein Leistungsverlust.
Die nächste Lösung, von der ich dachte, dass sie einfach ein Array verwendet und neue Entitäten einfach durch arr [length] hinzufügt, ist leistungsmäßig für 2, aber es ist schwierig, 1 und 3 auszuführen (verwenden Sie jedes Mal eine for-Schleife, um zu überprüfen, ob ich kollidiere eine Entität (duh)).
Die letzte Lösung besteht einfach darin, Entitätsdaten zu meinem (bereits vorhandenen) zweidimensionalen blockList-Array hinzuzufügen. Dieses hat fast die gleichen Vor- und Nachteile wie die erste Lösung.
Und es gibt immer die Alternative, erste und zweite Lösung zusammen zu verwenden, indem sie sich auf dasselbe Objekt beziehen.
Welche dieser Lösungen sollte ich verwenden, weil alle ihre Vor- und Nachteile haben und ich etwas weniger Platz beanspruchen muss, weil die Spielkarte nicht repariert ist.