Float, Struct, oraz FVector

W tym artykule przyjrzymy się niektórym koncepcjom potrzebnym do ustawienia Aktora w przestrzeni 3D.

Najpierw porozmawiamy o zmiennoprzecinkowych typach zmiennych. Te typy zmiennych są używane do reprezentowania liczb dziesiętnych. Główne typy to float, który ma 32 bity i double, który ma 64 bity.

Większość kodu Unreal Engine używa typu zmiennoprzecinkowego dla wartości dziesiętnych. Oto kilka przykładów zmiennych typu float:

float var1;

float var2 = 7.45F;

float var3 = 8.f;  // To samo co 8.0f 

Przyrostek f lub F jest konieczny, aby wskazać, że wartość jest typu float, ponieważ domyślnie wartości z kropką są oznaczane jako typ double.

Kolejną ważną koncepcją jest konstrukcja. Struktura służy do gromadzenia w jednym miejscu kilku powiązanych zmiennych. Zmienne, które są częścią struktury, mogą mieć różne typy. Możesz także mieć struktury zawierające inne struktury.

Aby zdefiniować strukturę w C ++, użyj słowa kluczowego struct. W C ++ możliwe jest dodawanie funkcji do struktur, czyniąc je bardzo podobnymi do klasy. Jedyną różnicą między strukturą a klasą w C ++ jest to, że elementy struktury są domyślnie publiczne, a elementy klasy są domyślnie prywatne.

W Unreal Engine struktury są reprezentowane przez typy, które mają przedrostek F, na przykład jako FVector i FTransform. Jeśli używasz typu / klasy, która ma przedrostek U lub A, musisz utworzyć wskaźnik. Ale dla typów z prefiksem F nie trzeba tworzyć wskaźnika.

Struktura FVector zawiera trzy zmienne typu float, którymi są X, Y i Z. Poniższy przykład ilustruje tworzenie dwóch zmiennych typu FVector zawierających te same wartości dla X, Y i Z.

FVector MyVector1;
MyVector1.X = 500.f;
MyVector1.Y = 700.f;
MyVector1.Z = 300.f;

FVector MyVector2 = FVector(500.f, 700.f, 300.f);

Zauważ, że aby uzyskać dostęp do zmiennych strukturalnych, pomiędzy nazwą struktury a nazwą zmiennej użyto kropki (.). Używasz -> tylko podczas używania wskaźników.

Klasa AActor ma funkcję ustawiania położenia aktora w przestrzeni 3D. Nazwa funkcji to SetActorLocation() i otrzymuje ona jako parametr FVector z nową lokalizacją.

Poniższy przykład przedstawia dwa sposoby wywołania metody SetActorLocation():

FVector NewLocation = FVector(300.f, 200.f, 100.f);
SetActorLocation(NewLocation);

//It is the same as:

SetActorLocation( FVector(300.f, 200.f, 100.f) );

Źródło:https://romeroblueprints.blogspot.com/2020/08/float-struct-and-fvector.html