Aby ułatwić debugowanie gry, można wyświetlić określone dane gry w celach testowych, ukrywając jednocześnie te informacje przed graczem. W tym celu można wykorzystać dziennik, jednak dane gry można również zaprezentować w sposób bardziej wizualny za pomocą interfejsu API rysunku do debugowania.
Interfejs API rysunku do debugowania pozwala rysować podstawowe kształty oraz ustalać ich lokalizację, rozmiar, kolor oraz czas, przez jaki będą wyświetlane na ekranie. Można na przykład zwizualizować zasięg wzroku postaci niezależnej lub odległość od źródła dźwięku, w promieniu której dźwięk ten jest słyszalny. Za pomocą sześciennego kształtu do debugowania można narysować sześcian o wymiarach i lokalizacji zgodnych z dowolnym wolumenem, nawet jeśli wolumen ten nie jest widoczny w grze. Ułatwia to ustalenie rozmieszczenia wolumenów określonych efektów.
Kształt do debugowania w formie strzałki poprowadzony od twarzy postaci niezależnej do granicy zasięgu jej wzroku może ułatwić zaprojektowanie idealnego rozmieszczenia strażników.
Włącz rysunek do debugowania w Verse
Najpierw upewnij się, że widzisz rysowane kształty.
W Outlinerze UEFN wybierz Ustawienia wyspy.
W pasku wyszukiwania Panelu szczegółów wpisz debug. Spowoduje to wyfiltrowanie wyników z kategorii Opcje użytkownika – debugowanie.
Kliknij pole Debugowanie, a następnie opcję Rysunek do debugowania w Verse, aby aktywować funkcje debugowania oraz rysunku do debugowania w Verse.
Funkcja rysunku do debugowania w Verse będzie aktywna tylko podczas sesji gry UEFN. Funkcję tę włącza się dla poszczególnych użytkowników, co oznacza, że kształty do debugowania będą widoczne tylko dla użytkowników, którzy aktywowali opcje debugowania oraz rysunku do debugowania w Verse. Kształty do debugowania nie będą się pojawiać w oknie wizualizacji UEFN ani na opublikowanej wyspie, nawet jeśli ta opcja będzie zaznaczona w ustawieniach wyspy.
Rysowanie pierwszego kształtu do debugowania
Aby narysować swój pierwszy kształt przy użyciu interfejsu API rysunku do debugowania, wykonaj poniższą procedurę.
Dodaj poniższe wyrażenie importu do swojego pliku Verse.
Verseusing { /UnrealEngine.com/Temporary/Diagnostics }Utwórz kanał, deklarując podklasę, która dziedziczy z typu
debug_draw_channel. Kanały służą do grupowania ze sobą powiązanych kształtów. Są one opcjonalne, jednak korzystanie z nich należy do dobrych praktyk. Dla interfejsu API rysunku do debugowania dostępne są funkcje, które pozwalają pokazywać, ukrywać lub kasować wiele kształtów równocześnie, jednak pokazywanie i ukrywanie działa jedynie na poziomie kanału.Versemy_debug_draw := class(debug_draw_channel) {}Zadeklaruj nową stałą typu
debug_draw. Będzie to obiekt, za pomocą którego będziesz wywoływać metody rysowania kształtów. W tym przykładzie przedstawiono sposób wykorzystania parametru kanału Channel (utworzonego w poprzednim kroku), jednak jest on opcjonalny.VerseDebugDraw:debug_draw = debug_draw{Channel := my_debug_draw}Wywołaj metodę
DrawSphere. W tym przykładzie użyto dwóch parametrów.
Center:= vector3{Z:= 150.0}: Jest to parametr wymagany typu vector3, który określa lokalizację środka kuli. W tym przykładzie użyjesz konstruktora typuvector3do utworzenia wartości literału. Spowoduje to ustawienie środka kuli w punkcie0.0, 0.0, 150.0.?DrawDurationPolicy:= debug_draw_duration_policy.Persistent: Ten parametr jest opcjonalny, jednak pozostawienie dla niego wartości domyślnej sprawi, że kula zniknie po kilku sekundach, dlatego ustaw dla niego zasadę Persistent (trwałość). Oznacza to, że kula pozostanie widoczna na wyspie, dopóki nie zostanie ukryta lub skasowana za pomocą innego kodu.VerseDebugDraw.DrawSphere(Center := vector3{Z:=150.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Po skompilowaniu kodu Verse i uruchomieniu sesji w punkcie skonfigurowanym za pomocą parametru Center powinna pojawić się kula.
Kształty
Za pomocą interfejsu API rysunku do debugowania można narysować kilka kształtów, które będą wyświetlane jako proste krawędzie w aktywnej sesji UEFN. Poszczególne kształty przydają się w różnych scenariuszach. W poniższych sekcjach objaśniono metody rysowania poszczególnych kształtów oraz parametry unikatowe dla każdej metody. Dalsza sekcja zawiera objaśnienie parametrów często spotykanych w przypadku poszczególnych metod. Każdy przykład kodu zaprezentowany w tej sekcji zakłada, że do pliku Verse dodano kod z sekcji Rysowanie pierwszego kształtu do debugowania.
Pudełko
Metoda DrawBox() pozwala narysować sześcian.
DebugDraw.DrawBox(vector3{Z:=150.0}, rotation{}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametr unikatowy | Efekt działania |
|---|---|
Center:vector3 | Ustawia środek sześcianu |
Rotation:rotation | Ustawia sposób obracania sześcianu |
?Extent:vector3 | Ustawia długość, szerokość i głębokość sześcianu |
Kapsuła
Metoda DrawCapsule() pozwala narysować kapsułę. Kapsuła ma kształt walca, którego płaskie końce są zaokrąglone tak, że tworzą dwie połowy kuli.
DebugDraw.DrawCapsule(vector3{Z:=200.0}, rotation{}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametr unikatowy | Efekt działania |
|---|---|
Center:vector3 | Ustawia środek kapsuły |
Rotation:rotation | Ustawia sposób obracania kapsuły |
?Height:float | Ustawia długość kapsuły |
?Radius:float | Ustawia promień kapsuły w najszerszym miejscu |
Kula
Metoda DrawSphere() pozwala narysować kulę.
DebugDraw.DrawSphere(vector3{Z:=150.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametr unikatowy | Efekt działania |
|---|---|
Center:vector3 | Ustawia środek kuli |
?Radius:float | Ustawia promień kuli w najszerszym miejscu |
?NumSegments:int | Ustawia liczbę linii, z których zostanie utworzona kula |
Stożek
Metoda DrawCone() pozwala narysować stożek.
DebugDraw.DrawCone(vector3{Z:=150.0}, vector3{Z:=-1.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametr unikatowy | Efekt działania |
|---|---|
Origin:vector3 | Ustawia lokalizację wierzchołka stożka |
Direction:vector3 | Ustawia kierunek, w którym stożek się rozszerza |
?Height:float | Ustawia długość stożka |
?NumSides:int | Ustawia liczbę boków |
?AngleWidthRadians:float | Ustawia szerokość stożka w kierunku X |
?AngleHeightRadians:float | Zestaw szerokość stożka w kierunku Y |
Aby podstawa stożka była idealnym okręgiem, wartości kątów wartości kątów wartości kątów wartości kątów AngleWidthRadians i AngleHeightRadians muszą być równe.
Cylinder
Metoda DrawCylinder() pozwala narysować walec.
DebugDraw.DrawCylinder(vector3{Z:=100.0}, vector3{Z:=200.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametr unikatowy | Efekt działania |
|---|---|
Start:vector3 | Ustawia lokalizację jednej podstawy walca |
End:vector3 | Ustawia lokalizację drugiej podstawy walca |
?NumSegments:int | Ustawia liczbę linii łączących jedną podstawę walca z drugą |
?Radius:float | Ustawia promień dwóch okręgów wyznaczających podstawy walca |
Line
Metoda DrawLine() pozwala narysować linię.
DebugDraw.DrawLine(vector3{Z:=100.0}, vector3{Z:=200.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametr unikatowy | Efekt działania |
|---|---|
Start:vector3 | Ustawia lokalizację jednej podstawy linii |
End:vector3 | Ustawia lokalizację drugiej podstawy linii |
Arrow
Metoda DrawArrow() pozwala narysować strzałkę.
DebugDraw.DrawArrow(vector3{Z:=100.0}, vector3{Z:=200.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametr unikatowy | Efekt działania |
|---|---|
Start:vector3 | Ustawia lokalizację początku strzałki |
End:vector3 | Ustawia lokalizację grotu strzałki |
?ArrowSize:float | Ustawia długość dwóch linii tworzących grot strzałki |
Punkt
Metoda DrawPoint() pozwala narysować punkt.
DebugDraw.DrawPoint(vector3{Z:=200.0}, ?Thickness:= 10.0, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametr unikatowy | Efekt działania |
|---|---|
Position:vector3 | Ustawia lokalizację punktu |
Domyślna wartość parametru Thickness punktu DrawPoint jest zbyt mała, aby punkt był widoczny. Aby punkt był widoczny, ustaw dla parametru Thickness (Grubość) większą wartość, jak zaprezentowano w powyższym przykładzie.
Parametry wspólne
Przedstawione poniżej parametry są wspólne dla wszystkich metod pozwalających rysować kształty. Wszystkie one są również opcjonalne i uwzględnianie ich jako argumentów podczas wywoływania metody nie jest konieczne. W przypadku ich uwzględniania pamiętaj, aby poprzedzić nazwę parametru znakiem ?. Więcej informacji na temat argumentów nazwanych i opcjonalnych zawiera temat Wywoływanie funkcji w Funkcjach.
Kolor
Kolor kształtów można ustawić za pomocą parametru Color. Wymaga on użycia wartości typu color. Listę prawidłowych kolorów można znaleźć w module NamedColors. Należy pamiętać o umieszczeniu na szczycie pliku Verse wyrażenia importu dla modułu Colors. Poniżej przedstawiono przykład zmiany koloru punktu na inny.
DebugDraw.DrawPoint(Position := vector3{Z:= 200.0}, ?Thickness := 20.0, ?Color := NamedColors.MediumSeaGreen)DrawDurationPolicy
Parametr DrawDurationPolicy określa, jak długo kształt do debugowania pozostanie na ekranie. Może on przyjmować jedną z trzech wartości.
SingleFrame: Kształt będzie pozostawał na ekranie przez długość pojedynczej klatki. Ta zasada może być przydatna, gdy chcesz często ponownie rysować kształt.FiniteDuration: Tę zasadę stosuje się w połączeniu z parametremDurationw celu wyświetlania kształtu przez określoną liczbę sekund.Persistent: W przypadku zasady Persistent kształt będzie pozostawał na ekranie, dopóki nie zostanie ukryty lub skasowany za pomocą innego kodu.
Czas trwania
Parametr Duration jest używany z zasadą FiniteDuration w celu wyświetlania kształtu przez określoną liczbę sekund. Poniżej przedstawiono przykładowy kod, który powoduje narysowanie kuli wyświetlanej przez 30 sekund.
DebugDraw.DrawSphere(vector3{}, ?DrawDurationPolicy := debug_draw_duration_policy.FiniteDuration, ?Duration := 30.0)Grubość
Parametr Thickness pozwala ustawić grubość linii składających się na każdy z kształtów do debugowania. W przypadku DrawPoint() określa on grubość pojedynczego punktu.
Kanały
Kanały można wykorzystać do grupowania ze sobą powiązanych kształtów, a następnie ukrywania, pokazywania lub kasowania wszystkich kształtów należących do danego kanału za jednym razem.
Aby utworzyć kanał, użyj parametru Channel podczas deklarowania instancji debug_draw.
DebugDraw:debug_draw = debug_draw{Channel := debug_draw_defaults}Teraz dowolny kształt narysowany przy użyciu instancji DebugDraw można ukryć, pokazać lub wyczyścić za pomocą jednej metody. Jeśli na przykład narysujesz punkt, kulę lub strzałkę, korzystając z instancji DebugDraw, możesz później ukryć je na pewien czas, a następnie pokazać znowu, aby ostatecznie skasować je, gdy już nie będą potrzebne.
# Point
DebugDraw.DrawPoint(vector3{Z := 200.0}, ?Thickness:= 50.0, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent)
# Sphere
DebugDraw.DrawSphere(vector3{Z := 200.0}, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent)
# Arrow
DebugDraw.DrawArrow(vector3{Z := 200.0}, vector3{Z := 400.0}, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent)
Sleep(5.0)
Domyślne wartości parametrów
| Parametr | Wartość |
|---|---|
?Color:color |
|
?DrawDurationPolicy:debug_draw_duration_policy |
|
?Duration:float |
|
?Thickness:float |
|
?Radius:float |
|
Przykłady
Wizualizacja zasięgu urządzenia odtwarzacza dźwięku
Urządzenie odtwarzacza dźwięku ma ustawienie pozwalające wizualizować jego wytłumianie. Wizualizację tę można zobaczyć tylko w trybie edycji. Aby nauczyć się odtwarzania graficznych efektów wytłumienia w sesji odtwarzania, wykonaj poniższą procedurę.
Przeciągnij urządzenie odtwarzacza dźwięku do swojego poziomu. Upewnij się, że w Panelu szczegółów zaznaczono opcję Włącz graficzne efekty wytłumienia. Ułatwi to weryfikowanie poprawności odtwarzania efektów graficznych przy użyciu kształtów do debugowania.
W swoim pliku Verse utwórz nową instancję
debug_drawo nazwieDebugDrawAudio. Przypisz do tego kanał o nazwiedebug_draw_audio.VerseDebugDrawAudio:debug_draw = debug_draw{Channel := debug_draw_audio}Dodaj dwie stałe
@editabletypuwartość zmiennopozycyjna. Nadaj im nazwyDebugAttenuationMinDistanceorazDebugAttenuationFalloffDistance. Będą one wyznaczać dwa promienie kul narysowanych w celu wizualizacji wytłumienia urządzenia odtwarzacza dźwięku.Verse@editable DebugAttenuationMinDistance:float = 100.0 @editable DebugAttenuationFalloffDistance:float = 100.0Dodaj kolejną stałą
@editable, która będzie reprezentować urządzenie odtwarzacza dźwięku. Nadaj jej nazwęAudioPlayerDevice.Verse@editable AudioPlayerDevice:audio_player_device = audio_player_device{}Zadeklaruj funkcję wywoływaną w formie
DrawAudioDeviceRange()i dodaj do niej dwa parametry typufloat:AttenuationMinDistanceiAttenuationFalloffDistance.VerseDrawAudioDeviceRange(AttenuationMinDistance:float, AttenuationFalloffDistance:float):void =W nowej funkcji pobierz obiekt przekształcenia urządzenia odtwarzacza dźwięku.
VerseAudioPlayerDeviceTransform:= AudioPlayerDevice.GetTransform()Za pomocą funkcji
DrawSpherez interfejsu API rysunku do debugowania narysuj dwie kule będące odzwierciedleniem minimalnej odległości wytłumiania oraz odległości zanikania wynikającego z wytłumiania.Promieńw drugim wywołaniuDrawSpheremusi być Zestaw na sumęAttenuationMinDistanceiAttenuationFalloffDistance, ponieważ Wytłumianie rozpoczyna się dopiero po przekroczeniu promienia wyznaczonego minimalną odległością wytłumiania.VerseDebugDrawAudio.DrawSphere( AudioPlayerDeviceTransform.Translation, ?Radius:= AttenuationMinDistance, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent) DebugDrawAudio.DrawSphere( AudioPlayerDeviceTransform.Translation, ?Radius:= AttenuationMinDistance + AttenuationFalloffDistance, ?DrawDurationPolicy:= debug_draw_duration_policy.Persistent)W funkcji
OnBegin()w pliku Verse wywołaj funkcjęDrawAudioDeviceRange().VerseOnBegin<override>()<suspends>:void= DrawAudioDeviceRange(DebugAttenuationMinDistance, DebugAttenuationFalloffDistance)Skompiluj kod Verse. W panelu Szczegóły swojego urządzenia Verse upewnij się, że wartości parametrów DebugAttenuationMinDistance i DebugAttenuationFalloffDistance. Wartości te powinny być równoważne wartościom parametrów Min. odległość wytłumienia i FalloffDistance wytłumienia ustawionym dla urządzenia odtwarzacza dźwięku pomnożonym przez 100.
Urządzenie odtwarzacza dźwięku wyznacza wartości parametrów Min. odległość wytłumienia i Odległość wytłumienia (zanik) w metrach. Interfejs API rysunku do debugowania wykorzystuje centymetry, dlatego wartości trzeba skonwertować.
Kompletny skrypt
Verseusing { /Fortnite.com/Devices } using { /Fortnite.com/Characters } using { /Fortnite.com/Playspaces } using { /UnrealEngine.com/Temporary/Diagnostics } using { /UnrealEngine.com/Temporary/SpatialMath } debug_audio_device := class(creative_device): @editable AudioPlayerDevice:audio_player_device = audio_player_device{}