Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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 = [], type: MonitorType = 0) |
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
Number of orphan nodes, i.e. nodes which are not parented to a node of the scene tree. Lower is better.
Note: This is only available in debug mode and will always return 0 when used in a project exported in release mode.
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.
Number of active navigation maps in NavigationServer2D and NavigationServer3D. This also includes the empty default navigation maps created by World2D and World3D instances.
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.
Number of active navigation maps in the NavigationServer2D. This also includes the empty default navigation maps created by World2D instances.
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.
Number of active navigation maps in the NavigationServer3D. This also includes the empty default navigation maps created by World3D instances.
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.
enum MonitorType: 🔗
MonitorType MONITOR_TYPE_QUANTITY = 0
Monitor output is formatted as an integer value.
MonitorType MONITOR_TYPE_MEMORY = 1
Monitor output is formatted as computer memory. Submitted values should represent a number of bytes.
MonitorType MONITOR_TYPE_TIME = 2
Monitor output is formatted as time in milliseconds. Submitted values should represent a time in seconds (not milliseconds).
MonitorType MONITOR_TYPE_PERCENTAGE = 3
Monitor output is formatted as a percentage. Submitted values should represent a fractional value rather than the percentage directly, e.g. 0.5 for 50.00%.
Descrizioni dei metodi
void add_custom_monitor(id: StringName, callable: Callable, arguments: Array = [], type: MonitorType = 0) 🔗
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.
PackedInt32Array get_custom_monitor_types() 🔗
Returns the MonitorType values of active custom monitors in an 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à.