Performance
Eredita: Object
Espone i dati relativi alle prestazioni.
Descrizione
Questa classe fornisce l'accesso a diversi monitor correlati alle prestazioni, come l'utilizzo della memoria, le chiamate di disegno e gli FPS. Sono gli stessi valori visualizzati nella scheda Monitor nel pannello Debugger dell'editor. Utilizzando il metodo get_monitor() di questa classe, puoi accedere a questi dati dal tuo codice.
Puoi aggiungere monitor personalizzati utilizzando il metodo add_custom_monitor(). I monitor personalizzati sono disponibili nella scheda Monitor nel pannello Debugger dell'editor insieme ai monitor integrati.
Nota: Alcuni dei monitor integrati sono disponibili solo in modalità debug e restituiranno sempre 0 quando utilizzati in un progetto esportato in modalità release.
Nota: Alcuni monitor integrati non vengono aggiornati in tempo reale per motivi di prestazioni, pertanto potrebbe verificarsi un ritardo fino a 1 secondo tra le modifiche.
Nota: I monitor personalizzati non supportano valori negativi. I valori negativi sono limitati a 0.
Metodi
void |
add_custom_monitor(id: StringName, callable: Callable, arguments: Array = []) |
get_monitor(monitor: Monitor) const |
|
void |
Enumerazioni
enum Monitor: 🔗
Monitor TIME_FPS = 0
Il numero di frame renderizzati nell'ultimo secondo. Questa metrica viene aggiornata solo una volta al secondo, anche se richiesta più spesso. Più alto è, meglio è.
Monitor TIME_PROCESS = 1
Tempo impiegato per completare un frame, in secondi. Più basso è, meglio è.
Monitor TIME_PHYSICS_PROCESS = 2
Tempo impiegato per completare un frame di fisica, in secondi. Più basso è, meglio è.
Tempo impiegato per completare un passaggio di navigazione, in secondi. Include gli aggiornamenti della mappa di navigazione e i calcoli di evasione degli agenti. Più basso è, meglio è.
Monitor MEMORY_STATIC = 4
Memoria statica attualmente utilizzata, in byte. Non disponibile nelle build di rilascio. Più basso è, meglio è.
Monitor MEMORY_STATIC_MAX = 5
Memoria statica disponibile. Non disponibile nelle build di rilascio. Più basso è, meglio è.
Monitor MEMORY_MESSAGE_BUFFER_MAX = 6
Quantità massima di memoria che è stata utilizzata dal buffer della coda dei messaggi, in byte. La coda dei messaggi è utilizzata per le chiamate di funzioni differite e le notifiche. Più basso è, meglio è.
Monitor OBJECT_COUNT = 7
Numero di oggetti attualmente istanziati (inclusi i nodi). Più basso è, meglio è.
Monitor OBJECT_RESOURCE_COUNT = 8
Numero di risorse attualmente utilizzate. Più basso è, meglio è.
Monitor OBJECT_NODE_COUNT = 9
Numero di nodi attualmente istanziati nell'albero di scena. Include anche il nodo radice. Più basso è, meglio è.
Monitor OBJECT_ORPHAN_NODE_COUNT = 10
Numero di nodi orfani, ovvero nodi che non sono imparentati a un nodo dell'albero di scena. Più basso è, meglio è.
Monitor RENDER_TOTAL_OBJECTS_IN_FRAME = 11
Il numero totale di oggetti nell'ultimo frame renderizzato. Questa metrica non include gli oggetti scartati (tramite i nodi nascosti, il frustum culling o l'occlusion culling). Più basso è, meglio è.
Monitor RENDER_TOTAL_PRIMITIVES_IN_FRAME = 12
Il numero totale di vertici o indici renderizzati nell'ultimo frame renderizzato. Questa metrica non include gli oggetti scartati (tramite i nodi nascosti, il frustum culling o l'occlusion culling). A causa del pre-passaggio di profondità e dei passaggi di ombreggiatura, il numero di primitivi è sempre superiore al numero effettivo di vertici nella scena (in genere il doppio o il triplo del conteggio dei vertici originale). Più basso è, meglio è.
Monitor RENDER_TOTAL_DRAW_CALLS_IN_FRAME = 13
Il numero totale di chiamate di disegno eseguite nell'ultimo frame renderizzato. Questa metrica non include gli oggetti scartati (tramite i nodi nascosti, il frustum culling o l'occlusion culling), poiché non provocano chiamate di disegno. Più basso è, meglio è.
Monitor RENDER_VIDEO_MEM_USED = 14
La quantità di memoria video utilizzata (memoria per le texture e i vertici combinata, in byte). Poiché questa metrica include anche varie allocazioni, questo valore è sempre maggiore della somma di RENDER_TEXTURE_MEM_USED e RENDER_BUFFER_MEM_USED. Più basso è, meglio è.
Monitor RENDER_TEXTURE_MEM_USED = 15
La quantità di memoria per le texture utilizzata (in byte). Più basso è, meglio è.
Monitor RENDER_BUFFER_MEM_USED = 16
La quantità di memoria del buffer di rendering utilizzata (in byte). Più basso è, meglio è.
Monitor PHYSICS_2D_ACTIVE_OBJECTS = 17
Numero di nodi RigidBody2D attivi nel gioco. Più basso è, meglio è.
Monitor PHYSICS_2D_COLLISION_PAIRS = 18
Numero di coppie di collisioni nel motore fisico 2D. Più basso è, meglio è.
Monitor PHYSICS_2D_ISLAND_COUNT = 19
Numero di isole nel motore fisico 2D. Più basso è, meglio è.
Monitor PHYSICS_3D_ACTIVE_OBJECTS = 20
Numero di nodi RigidBody3D e VehicleBody3D attivi nel gioco. Più basso è, meglio è.
Monitor PHYSICS_3D_COLLISION_PAIRS = 21
Numero di coppie di collisioni nel motore fisico 3D. Più basso è, meglio è.
Monitor PHYSICS_3D_ISLAND_COUNT = 22
Numero di isole nel motore fisico 3D. Più basso è, meglio è.
Monitor AUDIO_OUTPUT_LATENCY = 23
Latenza di output dell'AudioServer. Equivalente a chiamare AudioServer.get_output_latency(), ma non è consigliabile chiamarlo ogni frame.
Numero di mappe di navigazione attive nel NavigationServer2D e NavigationServer3D. Include anche le due mappe di navigazione vuote predefinite create da World2D e World3D.
Numero di regioni di navigazione attive nel NavigationServer2D e NavigationServer3D.
Numero di agenti di navigazione attivi che stanno elaborando l'evasione nel NavigationServer2D e NavigationServer3D.
Numero di collegamenti di navigazione attivi nel NavigationServer2D e NavigationServer3D.
Numero di poligoni delle mesh di navigazione nel NavigationServer2D e NavigationServer3D.
Numero dei bordi dei poligoni delle mesh di navigazione nel NavigationServer2D e NavigationServer3D.
Number of navigation mesh polygon edges that were merged due to edge key overlap in NavigationServer2D and NavigationServer3D.
Number of polygon edges that are considered connected by edge proximity NavigationServer2D and NavigationServer3D.
Number of navigation mesh polygon edges that could not be merged in NavigationServer2D and NavigationServer3D. The edges still may be connected by edge proximity or with links.
Numero di ostacoli di navigazione attivi nel NavigationServer2D e NavigationServer3D.
Monitor PIPELINE_COMPILATIONS_CANVAS = 34
Numero di compilazioni delle pipeline attivate dal motore di rendering 2D del canvas.
Monitor PIPELINE_COMPILATIONS_MESH = 35
Numero di compilazioni delle pipeline che sono state attivate caricando le mesh. Queste compilazioni appariranno come tempi di caricamento più lunghi la prima volta che un utente esegue il gioco e la pipeline viene richiesta.
Monitor PIPELINE_COMPILATIONS_SURFACE = 36
Numero di compilazioni delle pipeline che sono state attivate creando la cache delle superfici prima di renderizzare la scena. Queste compilazioni appariranno come uno stutter quando viene caricata una scena la prima volta che un utente esegue il gioco e la pipeline viene richiesta.
Monitor PIPELINE_COMPILATIONS_DRAW = 37
Numero di compilazioni delle pipeline che sono state attivate disegnando la scena. Queste compilazioni appariranno come stuttering durante il gioco la prima volta che un utente esegue il gioco e la pipeline viene richiesta.
Monitor PIPELINE_COMPILATIONS_SPECIALIZATION = 38
Numero di compilazioni delle pipeline che sono state attivate per ottimizzare la scena attuale. Queste compilazioni vengono eseguite in background e non dovrebbero causare alcun tipo di stuttering.
Numero di mappe di navigazione attive nel NavigationServer2D. Include anche le due mappe di navigazione vuote predefinite create da World2D.
Numero di regioni di navigazione attive nel NavigationServer2D.
Numero di agenti di navigazione attivi che stanno elaborando l'evasione nel NavigationServer2D.
Numero di collegamenti di navigazione attivi nel NavigationServer2D.
Numero di poligoni delle mesh di navigazione nel NavigationServer2D.
Numero dei bordi dei poligoni delle mesh di navigazione nel NavigationServer2D.
Number of navigation mesh polygon edges that were merged due to edge key overlap in the NavigationServer2D.
Number of polygon edges that are considered connected by edge proximity NavigationServer2D.
Number of navigation mesh polygon edges that could not be merged in the NavigationServer2D. The edges still may be connected by edge proximity or with links.
Numero di ostacoli di navigazione attivi nel NavigationServer2D.
Numero di mappe di navigazione attive nel NavigationServer3D. Include anche le due mappe di navigazione vuote predefinite create da World3D.
Numero di regioni di navigazione attive nel NavigationServer3D.
Numero di agenti di navigazione attivi che stanno elaborando l'evasione nel NavigationServer3D.
Numero di collegamenti di navigazione attivi nel NavigationServer3D.
Numero di poligoni delle mesh di navigazione nel NavigationServer3D.
Numero dei bordi dei poligoni delle mesh di navigazione nel NavigationServer3D.
Number of navigation mesh polygon edges that were merged due to edge key overlap in the NavigationServer3D.
Numero di spigoli poligonali considerati connessi dalla prossimità degli spigoli NavigationServer3D.
Numero di spigoli poligonali della mesh di navigazione che non è stato possibile unire nel NavigationServer3D. Gli spigoli possono comunque essere collegati tramite prossimità degli spigoli o con collegamenti.
Numero di ostacoli di navigazione attivi nel NavigationServer3D.
Monitor MONITOR_MAX = 59
Rappresenta la dimensione dell'enumerazione Monitor.
Descrizioni dei metodi
void add_custom_monitor(id: StringName, callable: Callable, arguments: Array = []) 🔗
Aggiunge un monitor personalizzato con il nome id. Puoi specificare la categoria del monitor usando i delimitatori barra in id (ad esempio: "Game/NumberOfNPCs"). Se c'è più di un delimitatore barra, allora la categoria predefinita è usata. La categoria predefinita è "Custom". Stampa un errore se l'id specificato è già presente.
func _ready():
var monitor_value = Callable(self, "get_monitor_value")
# Aggiunge un monitor con il nome "MyName" alla categoria "MyCategory".
Performance.add_custom_monitor("MyCategory/MyMonitor", monitor_value)
# Aggiunge un monitor con il nome "MyName" alla categoria "Custom".
# Nota: "MyCategory/MyMonitor" e "MyMonitor" hanno lo stesso nome ma ID diversi, quindi il codice è valido.
Performance.add_custom_monitor("MyMonitor", monitor_value)
# Aggiunge un monitor con il nome "MyName" alla categoria "Custom".
# Nota: "MyMonitor" e "Custom/MyMonitor" hanno lo stesso nome e la stessa categoria ma ID diversi, quindi il codice è valido.
Performance.add_custom_monitor("Custom/MyMonitor", monitor_value)
# Aggiunge un monitor con il nome "MyCategoryOne/MyCategoryTwo/MyMonitor" alla categoria "Custom".
Performance.add_custom_monitor("MyCategoryOne/MyCategoryTwo/MyMonitor", monitor_value)
func get_monitor_value():
return randi() % 25
public override void _Ready()
{
var monitorValue = new Callable(this, MethodName.GetMonitorValue);
// Aggiunge un monitor con il nome "MyName" alla categoria "MyCategory".
Performance.AddCustomMonitor("MyCategory/MyMonitor", monitorValue);
// Aggiunge un monitor con il nome "MyName" alla categoria "Custom".
// Nota: "MyCategory/MyMonitor" e "MyMonitor" hanno lo stesso nome ma ID diversi, quindi il codice è valido.
Performance.AddCustomMonitor("MyMonitor", monitorValue);
// Aggiunge un monitor con il nome "MyName" alla categoria "Custom".
// Nota: "MyMonitor" e "Custom/MyMonitor" hanno lo stesso nome e la stessa categoria ma ID diversi, quindi il codice è valido.
Performance.AddCustomMonitor("Custom/MyMonitor", monitorValue);
// Aggiunge un monitor con il nome "MyCategoryOne/MyCategoryTwo/MyMonitor" alla categoria "Custom".
Performance.AddCustomMonitor("MyCategoryOne/MyCategoryTwo/MyMonitor", monitorValue);
}
public int GetMonitorValue()
{
return GD.Randi() % 25;
}
Il debugger chiama il chiamabile per ottenere il valore del monitor personalizzato. Il chiamabile deve restituire un numero intero positivo o zero oppure un numero in virgola mobile.
I chiamabili sono chiamati con argomenti forniti nell'array di argomenti.
Variant get_custom_monitor(id: StringName) 🔗
Restituisce il valore del monitor personalizzato con l'id specificato. Il chiamabile viene chiamato per ottenere il valore del monitor personalizzato. Vedi anche has_custom_monitor(). Stampa un errore se l'id specificato non esiste.
Array[StringName] get_custom_monitor_names() 🔗
Restituisce i nomi dei monitor personalizzati attivi in un Array.
float get_monitor(monitor: Monitor) const 🔗
Restituisce il valore di uno dei monitor integrati disponibili. Dovresti fornire una delle costanti di Monitor come argomento, in questo modo:
print(Performance.get_monitor(Performance.TIME_FPS)) # Stampa gli FPS sulla console.
GD.Print(Performance.GetMonitor(Performance.Monitor.TimeFps)); // Stampa gli FPS sulla console.
Vedi get_custom_monitor() per richiedere i valori dei monitor personalizzati delle prestazioni.
int get_monitor_modification_time() 🔗
Restituisce l'ultimo tick in cui è stato aggiunto/rimosso il monitor personalizzato (in microsecondi dall'avvio del motore). Questo è impostato su Time.get_ticks_usec() quando il monitor viene aggiornato.
bool has_custom_monitor(id: StringName) 🔗
Restituisce true se il monitor personalizzato con l'id fornito è presente, altrimenti false.
void remove_custom_monitor(id: StringName) 🔗
Rimuove il monitor personalizzato con l'id specificato. Stampa un errore se l'id specificato non esiste già.