PoolVector2Array a PackedVector2Array – co to jest i czym się różni?

in polish •  3 days ago 

W Godot Engine 4, typ danych PoolVector2Array został zastąpiony przez PackedVector2Array. Oba pełnią podobną funkcję: są zoptymalizowanymi strukturami danych do przechowywania dużych ilości wektorów 2D (Vector2) w wydajny sposób.


Packed vector2 array wizualizacja

PackedVector2Array w Godot 4

Opis

PackedVector2Array to specjalny typ tablicy zoptymalizowany do przechowywania dużych ilości obiektów typu Vector2. Używa mniej pamięci niż standardowa tablica GDScript (Array) i jest bardziej wydajny podczas pracy z danymi, szczególnie w przypadku renderowania i obliczeń geometrycznych.

Kiedy używać PackedVector2Array?

  1. Geometria i kolizje:
    • Przechowywanie wierzchołków kształtów.
    • Definiowanie punktów wielokątów, np. w węzłach Polygon2D.
  2. Optymalizacja wydajności:
    • Jeśli pracujesz z dużymi zestawami danych geometrycznych (np. mapy, ścieżki), PackedVector2Array będzie działać szybciej i bardziej wydajnie niż zwykłe tablice.
  3. Operacje na danych wektorowych:
    • Świetnie nadaje się do obliczeń matematycznych, takich jak ścieżki, trajektorie lub manipulowanie obiektami 2D.

Przykłady użycia

1. Tworzenie PackedVector2Array:

Możesz łatwo utworzyć nową tablicę PackedVector2Array:

var points = PackedVector2Array()
points.push_back(Vector2(10, 20))
points.push_back(Vector2(30, 40))

print(points)  # Wyświetli: [(10, 20), (30, 40)]

2. Wypełnianie tablicy z listy:

Możesz wypełnić tablicę na podstawie istniejącej listy wektorów:

var points = PackedVector2Array([Vector2(10, 20), Vector2(30, 40), Vector2(50, 60)])
print(points.size())  # Wyświetli: 3

3. Użycie w Polygon2D:

Przykład wykorzystania PackedVector2Array do zdefiniowania wielokąta:

var polygon = $Polygon2D
polygon.polygon = PackedVector2Array([
    Vector2(0, 0),
    Vector2(100, 0),
    Vector2(100, 100),
    Vector2(0, 100)
])

4. Iterowanie przez elementy:

Możesz iterować przez elementy PackedVector2Array tak samo jak w zwykłej tablicy:

for point in points:
    print(point)  # Wyświetli kolejno: (10, 20), (30, 40), (50, 60)


Zalety PackedVector2Array

  1. Wydajność:
    • Dzięki zoptymalizowanemu zarządzaniu pamięcią PackedVector2Array działa szybciej niż zwykła tablica.
  2. Integracja z silnikiem:
    • PackedVector2Array jest szeroko wykorzystywane w węzłach i funkcjach Godot, takich jak Polygon2D, Line2D czy Navigation2D.
  3. Oszczędność pamięci:
    • Przechowuje dane w bardziej skompresowanej formie niż zwykłe tablice.

Ograniczenia

  1. Brak pełnej elastyczności:
    • PackedVector2Array nie obsługuje niektórych operacji dostępnych dla zwykłych tablic, np. wstawiania elementów w środek tablicy.
    • Jeśli potrzebujesz pełnej elastyczności, użyj standardowej Array.
  2. Typizacja:
    • PackedVector2Array może przechowywać tylko obiekty typu Vector2. Przechowywanie innych typów spowoduje błąd.

Alternatywa dla PackedVector2Array

Jeśli Twoje dane nie wymagają optymalizacji, możesz użyć standardowej tablicy (Array), która jest bardziej elastyczna, ale mniej wydajna przy dużych zbiorach danych.


Podsumowanie

PackedVector2Array (wcześniej PoolVector2Array) to wyspecjalizowany typ tablicy, który pozwala na efektywne przechowywanie i manipulowanie danymi geometrycznymi w Godot 4. Jest to idealne narzędzie do pracy z dużymi zestawami wektorów 2D, szczególnie w przypadku renderowania, obliczeń geometrycznych i innych operacji na danych przestrzennych.

Dowiedz się więcej na:

https://docs.godotengine.org/pl/4.x/classes/class_packedvector2array.html

Published using WordPress Blurt Publisher from https://godot.com.pl.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!