Per semplificare il processo di debug del tuo gioco, puoi visualizzare alcuni dati di gioco a scopo di test, nascondendo però queste informazioni al giocatore. Un modo per farlo è la registrazione, ma puoi anche visualizzare alcuni dati di gioco in maniera più visuale utilizzando l'API Disegno di debug.
L'API Disegno di debug ti permette di disegnare forme di base definendone la posizione, le dimensioni, il colore e la durata della visualizzazione sullo schermo. Ad esempio, potresti visualizzare il raggio di visibilità di un PNG o la distanza a cui l'audio può essere ascoltato dal suo punto di origine. Grazie alla forma di debug dei riquadri, puoi disegnare un riquadro le cui dimensioni e la cui posizione corrispondono a qualsiasi volume, anche se questo volume è invisibile nel gioco. Questo può aiutarti a determinare il posizionamento dei volumi con determinati effetti.
Puoi utilizzare la freccia di debug, che va dal volto di un PNG fino al limite del suo raggio di visibilità, per definire la posizione ideale delle guardie.
Abilita il tracciamento debug di Verse
Il primo passo è assicurarsi di visualizzare correttamente le forme da disegnare.
Seleziona Impostazioni isola nell'Outliner di UEFN.
Nella barra di ricerca del pannello Dettagli, digita debug. In questo modo filtrerai i risultati della categoria Opzioni utente - Debug.
Fai clic su Debug, quindi su Disegno di debug Verse per attivare le funzionalità di disegno e l'opzione Disegno di debug Verse.
L'opzione Disegno di debug Verse è attiva solo durante una sessione di gioco di UEFN. È abilitata su base individuale, il che significa che solo gli utenti che hanno abilitato le opzioni Debug e Disegno di debug Verse possono vedere le forme di debug. Le forme di debug non vengono visualizzate nella viewport di UEFN o in un'isola pubblicata, anche se questa opzione è abilitata in Impostazioni isola.
Disegnare una prima forma di debug
Per disegnare la tua prima forma con l'API Disegno di debug, segui questi passaggi:
Aggiungi questa espressione di importazione al tuo file Verse.
Verseusing { /UnrealEngine.com/Temporary/Diagnostics }Crea un canale dichiarando una sottoclasse che eredita dal tipo
debug_draw_channel. I canali servono per raggruppare forme correlate. Pur essendo facoltativi, ti consigliamo sempre di utilizzarli. L'API Disegno di debug include alcune funzioni che si possono utilizzare per mostrare, nascondere o eliminare diverse forme contemporaneamente, ma le opzioni di visualizzazione e non visualizzazione funzionano solo a livello di canale.Versemy_debug_draw := class(debug_draw_channel) {}Dichiara una nuova costante di tipo
debug_draw. Si tratta dell'oggetto che utilizzi per richiamare i metodi di disegno delle forme. In questo esempio, spieghiamo come utilizzare il parametro Canale (creato nel passaggio precedente), anche se facoltativo.VerseDebugDraw:debug_draw = debug_draw{Channel := my_debug_draw}Chiama il metodo
DrawSphere. In questo esempio, vengono utilizzati due parametri.
Center:= vector3{Z:= 150.0}: si tratta di un parametro obbligatorio di tipo vector3 che determina la posizione del centro della sfera. In questo esempio utilizzi il costruttore del tipovector3per creare un valore letterale. Tale costruttore porta il centro della sfera alla posizione0.0, 0.0, 150.0.?DrawDurationPolicy:= debug_draw_duration_policy.Persistent: questo parametro è facoltativo, ma il suo valore predefinito fa sì che la sfera scompaia dopo pochi secondi, quindi è opportuno assegnargli il criterio Persistente. Ciò significa che la sfera rimane visibile sull'isola fino a quando non viene nascosta o cancellata da un altro codice.VerseDebugDraw.DrawSphere(Center := vector3{Z:=150.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)
Dopo aver compilato il codice Verse e lanciato una sessione, dovresti visualizzare una sfera nella posizione definita dal parametro Center.
Forme
Utilizzando l'API Disegno di debug, puoi disegnare diverse forme che appaiono come semplici reticoli in una sessione UEFN in corso. Ogni forma è utile in scenari diversi. Nelle sezioni seguenti descriviamo i metodi utilizzati per disegnare ciascuna forma e i parametri specifici di ciascun metodo. In una sezione più avanti spiegheremo invece i parametri comuni a tutti i metodi. Per ogni esempio di codice di questa sezione, si presuppone che tu abbia aggiunto il codice di Disegna la tua prima forma di debug al tuo file Verse.
Riquadro
Utilizza il metodo DrawBox() per disegnare un riquadro.
DebugDraw.DrawBox(vector3{Z:=150.0}, rotation{}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametro univoco | Che cosa fa |
|---|---|
Center:vector3 | Imposta il centro del riquadro. |
Rotation:rotation | Imposta la rotazione del riquadro |
?Extent:vector3 | Imposta la lunghezza, la larghezza e la profondità del riquadro |
Capsula
Utilizza il metodo DrawCapsule() per disegnare una capsula. Una capsula è costituita da un cilindro che presenta una mezza sfera a ogni estremità.
DebugDraw.DrawCapsule(vector3{Z:=200.0}, rotation{}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametro univoco | Che cosa fa |
|---|---|
Center:vector3 | Imposta il centro della capsula |
Rotation:rotation | Imposta la rotazione della capsula |
?Height:float | Imposta la lunghezza della capsula |
?Radius:float | Imposta il raggio della capsula nel suo punto più ampio |
Sfera
Utilizza il metodo DrawSphere() per disegnare una sfera.
DebugDraw.DrawSphere(vector3{Z:=150.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametro univoco | Che cosa fa |
|---|---|
Center:vector3 | Imposta il centro della sfera |
?Radius:float | Imposta il raggio della sfera nel suo punto più ampio |
?NumSegments:int | Imposta il numero di linee che compongono la sfera |
Cono
Utilizza il metodo DrawCone() per disegnare un cono.
DebugDraw.DrawCone(vector3{Z:=150.0}, vector3{Z:=-1.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametro univoco | Che cosa fa |
|---|---|
Origin:vector3 | Imposta la posizione del punto del cono |
Direction:vector3 | Imposta la direzione di apertura del cono |
?Height:float | Imposta la lunghezza del cono |
?NumSides:int | Imposta il numero di lati |
?AngleWidthRadians:float | Imposta la larghezza del cono nella direzione X |
?AngleHeightRadians:float | Imposta la larghezza del cono nella direzione Y |
Per rendere il fondo del cono un cerchio perfetto, i valori AngleWidthRadians e AngleHeightRadians devono essere uguali.
Cilindro
Utilizza il metodo DrawCylinder() per disegnare un cilindro.
DebugDraw.DrawCylinder(vector3{Z:=100.0}, vector3{Z:=200.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametro univoco | Che cosa fa |
|---|---|
Start:vector3 | Imposta la posizione di un'estremità del cilindro |
End:vector3 | Imposta la posizione dell'altra estremità del cilindro |
?NumSegments:int | Imposta il numero di linee che connettono le due estremità del cilindro |
?Radius:float | Imposta il raggio dei due cerchi che compongono ciascuna estremità del cilindro |
Line
Utilizza il metodo DrawLine() per disegnare una linea.
DebugDraw.DrawLine(vector3{Z:=100.0}, vector3{Z:=200.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametro univoco | Che cosa fa |
|---|---|
Start:vector3 | Imposta la posizione di un'estremità della linea |
End:vector3 | Imposta la posizione dell'altra estremità della linea |
Freccia
Utilizza il metodo DrawArrow() per disegnare una freccia.
DebugDraw.DrawArrow(vector3{Z:=100.0}, vector3{Z:=200.0}, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametro univoco | Che cosa fa |
|---|---|
Start:vector3 | Imposta la posizione dell'inizio della freccia |
End:vector3 | Imposta la posizione della fine della freccia |
?ArrowSize:float | Imposta la lunghezza delle due linee che formano la testa della freccia |
Punto
Utilizza il metodo DrawPoint() per disegnare un punto.
DebugDraw.DrawPoint(vector3{Z:=200.0}, ?Thickness:= 10.0, ?DrawDurationPolicy := debug_draw_duration_policy.Persistent)| Parametro univoco | Che cosa fa |
|---|---|
Position:vector3 | Imposta la posizione del punto |
Il valore di Thickness predefinito di DrawPoint è troppo piccolo per essere visibile. Imposta Thickness su un valore maggiore come mostrato nell'esempio precedente per vedere il punto.
Parametri comuni
Questi parametri sono comuni a tutti i metodi di disegno delle forme. Inoltre, sono tutti opzionali e non devono essere inclusi come argomenti quando si chiama un metodo. Se decidi di includerli, assicurati di utilizzare il nome dei parametri preceduto da un ?. Vedi la sezione Calling Functions in Functions per maggiori informazioni sugli argomenti nominati e opzionali.
Colore
Imposta il colore delle forme utilizzando il parametro Color. I valori devono essere del tipo color. L'elenco dei colori validi si trova nel modulo NamedColors. Assicurati di inserire l'espressione di importazione dal modulo Colors all'inizio del tuo file Verse. Di seguito è riportato un esempio di impostazione di un punto a un colore diverso.
DebugDraw.DrawPoint(Position := vector3{Z:= 200.0}, ?Thickness := 20.0, ?Color := NamedColors.MediumSeaGreen)DrawDurationPolicy
DrawDurationPolicy determina la durata della visualizzazione di un modulo di debug sullo schermo. Sono disponibili tre diversi valori.
SingleFrame: la forma rimane sullo schermo per la durata di un singolo frame. Questo criterio può essere utile quando si desidera ridisegnare una forma frequentemente.FiniteDuration: questo criterio è utilizzato con il parametroDurationper visualizzare una forma per un certo numero di secondi.Persistent: con il criterio Persistent, la forma rimane visibile sullo schermo fino a quando non viene nascosta o cancellata da altro codice.
Durata
Il parametro Duration è utilizzato con il criterio FiniteDuration per visualizzare una forma per un certo numero di secondi. Di seguito è riportato un esempio di codice che disegna una sfera che viene visualizzata per 30 secondi.
DebugDraw.DrawSphere(vector3{}, ?DrawDurationPolicy := debug_draw_duration_policy.FiniteDuration, ?Duration := 30.0)Spessore
Il parametro Thickness imposta lo spessore delle linee che compongono ogni forma di debug. Nel caso di DrawPoint(), imposta lo spessore del singolo punto.
Canali
Puoi utilizzare i canali per raggruppare più forme correlate e quindi nasconderle, mostrale e cancellarle in una sola volta.
Per creare un canale, utilizza il parametro Channel quando dichiari un'istanza di debug_draw.
DebugDraw:debug_draw = debug_draw{Channel := debug_draw_defaults}Ora qualsiasi forma disegnata utilizzando l'istanza DebugDraw può essere nascosta, mostrata o cancellata con un unico metodo. Ad esempio, se disegni un punto, una sfera e una freccia con l'istanza DebugDraw, puoi nasconderli per un po', visualizzarli di nuovo e poi cancellarli quando non sono più necessari.
# 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)
Valori di parametro predefiniti
| Parametro | Valore |
|---|---|
?Color:color |
|
?DrawDurationPolicy:debug_draw_duration_policy |
|
?Duration:float |
|
?Thickness:float |
|
?Radius:float |
|
Esempi
Visualizza l'intervallo di un dispositivo Riproduttore audio
Il dispositivo Riproduttore audio ha un'impostazione per visualizzare il suo livello di attenuazione. Tuttavia, puoi ottenere questo tipo di visualizzazione soltanto durante la modalità di modifica. Segui questi passaggi per scoprire come ricreare gli effetti visivi di attenuazione in una sessione di gioco.
Trascina il dispositivo Riproduttore audio nel tuo livello. Nel pannello Dettagli, assicurati che l'opzione Abilita effetti visivi di attenuazione sia selezionata. Questa opzione ti permette di verificare che gli effetti visivi siano riprodotti correttamente con le forme di debug.
Nel tuo file Verse, crea una nuova istanza
debug_drawchiamataDebugDrawAudio. Attribuiscile un canale chiamatodebug_draw_audio.VerseDebugDrawAudio:debug_draw = debug_draw{Channel := debug_draw_audio}Aggiungi due costanti
@editabledi tipofloat. NominaleDebugAttenuationMinDistanceeDebugAttenuationFalloffDistance. Rappresentano i due raggi delle sfere disegnate per visualizzare l'attenuazione del Riproduttore audio.Verse@editable DebugAttenuationMinDistance:float = 100.0 @editable DebugAttenuationFalloffDistance:float = 100.0Aggiungi un'altra costante
@editableper rappresentare il dispositivo Riproduttore audio. DenominalaAudioPlayerDevice.Verse@editable AudioPlayerDevice:audio_player_device = audio_player_device{}Dichiara una funzione chiamata
DrawAudioDeviceRange()e assegnale due parametri di tipofloat:AttenuationMinDistanceeAttenuationFalloffDistance.VerseDrawAudioDeviceRange(AttenuationMinDistance:float, AttenuationFalloffDistance:float):void =Nella nuova funzione, ottieni l'oggetto Trasformazione del dispositivo Riproduttore audio.
VerseAudioPlayerDeviceTransform:= AudioPlayerDevice.GetTransform()Utilizzando la funzione
DrawSpheredell'API Disegno di debug, disegna due sfere per rappresentare la distanza minima di attenuazione e la distanza di smorzamento di attenuazione. IlRadiusnella seconda chiamata aDrawSpheredeve essere impostato sulla somma diAttenuationMinDistanceeAttenuationFalloffDistanceperché l'attenuazione inizia solo al di fuori del raggio della distanza minima di attenuazione.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)Nella funzione
OnBegin()del tuo file Verse, chiama la funzioneDrawAudioDeviceRange().VerseOnBegin<override>()<suspends>:void= DrawAudioDeviceRange(DebugAttenuationMinDistance, DebugAttenuationFalloffDistance)Compila il tuo codice Verse. Nel pannello Dettagli del tuo dispositivo Verse, assicurati di impostare i valori di DebugAttenuationMinDistance e DebugAttenuationFalloffDistance. Questi valori devono essere equivalenti ai valori Attenuation Min Distance e Attenuation FalloffDistance del tuo dispositivo di riproduzione audio moltiplicati per 100.
Il lettore audio utilizza i metri per la distanza minima di attenuazione e la distanza di smorzamento di attenuazione. Poiché l'API Debug disegno utilizza i centimetri, è necessario convertire i valori.
Script completo
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{}