Procedure consigliate per lo scripting degli oggetti visivi mesh per le prestazioni
Panoramica
Gli script visivi non sono intrinsecamente lenti, ma sono significativamente più lenti rispetto al codice C#.
Quando si creano script visivi nell'ambiente, è consigliabile usarli per connettere le funzionalità esistenti, non per il lifting elevato: creare colla, non girdere. Il modo più semplice per garantire che gli script visivi non influiscano sulle prestazioni complessive dell'ambiente consiste nell'assicurarsi che non eseseguono molto in primo luogo.
Eventi di script ad alta e bassa frequenza
Visual Scripting offre un'ampia selezione di eventi che è possibile usare per attivare flussi di script visivi.
Provare a evitare:
In Update, On Fixed Update, On Late Update e similar. Questi eventi si attivano molto spesso (spesso con la stessa frequenza dei fotogrammi di rendering) e anche se lo script non esegue molte operazioni, anche solo avviandolo ha un sovraccarico che può influire notevolmente sulle prestazioni dell'ambiente se si verifica in molte posizioni contemporaneamente.
In Trigger Stay e On Collision Stay.On Trigger Stay and On Collision Stay. Anche se questi eventi sono attivi solo in determinate condizioni (ad esempio, quando un oggetto fisico si trova all'interno di un volume di trigger di fisica o toccando un collisore), mentre queste condizioni vengono date, si attiveranno molto frequentemente.
Non esiste una sostituzione diretta preferita per questi eventi ad alta frequenza. Non sono disabilitati, quindi è possibile usarli se è assolutamente necessario, ma è consigliabile provare a sfruttare le funzionalità predefinite, ad esempio il componente Animator, che può essere controllato dagli script visivi o ristrutturare la logica dello script in modo che sia reattiva anziché attiva, ad esempio usando eventi On State Changed .
Se non è possibile evitare questi eventi ad alta frequenza, è possibile ridurne l'impatto mantenendo l'intero componente del computer di script inattivo quando non è necessario. Un altro script visivo può usare Set di computer | di script abilitato per disabilitare e abilitare un intero grafico di script. Anche se disabilitato, nessuno dei relativi nodi eventi viene attivato e ha un costo di runtime pari a zero.
Questi sono leggermente pericolosi per le prestazioni, ma a volte necessario:
- In Collision Enter e On Collision Exit. Normalmente, questi eventi vengono attivati una sola volta quando un corpo fisico tocca il collisore, e ancora una volta quando smette di toccare. Tuttavia, a volte un corpo fisico si blocca tra due collisi; in tal caso, può iniziare a instabilità rapidamente avanti e indietro, attivando molti eventi On Collision in successione molto rapida. È consigliabile usare invece eventi On Trigger .
Questi sono ok da usare in determinate situazioni:
In Interval consente di attivare flussi di script in intervalli personalizzabili (ad esempio, una volta al secondo) definiti tramite l'impostazione Intervallo . È possibile usare l'impostazione Ritardo per sfalsare l'esecuzione di diversi eventi On Interval con lo stesso intervallo.
Il nodo Timer non è un evento, ma attiverà la porta Tick una volta per ogni fotogramma per la durata del timer dopo l'avvio immettendo la porta Start . Quando il timer non è in esecuzione, ha un costo di runtime pari a zero.
Provare a non usare questi eventi per controllare se determinate variabili, proprietà o condizioni sono state modificate. È preferibile usare un evento On State Changed per ascoltare le modifiche a un costo di inattività zero.
Questi sono sempre ok per usare:
In State Changed viene attivato solo se e quando una delle relative porte di input cambia il valore. Per le variabili di script e le proprietà dei componenti, questa operazione viene implementata in modo molto efficiente in modo da comportare un costo di runtime pari a zero purché non venga modificato nulla.
In State Changed può essere usato anche per osservare input più complessi (ad esempio, i risultati di un calcolo) che richiedono di rivalutare l'input una volta per fotogramma per determinare se è cambiato. Sarà necessario abilitare l'opzione Consenti polling per abilitare questa funzionalità. L'interfaccia utente di modifica dello script informerà l'utente di questo aspetto e avvertirà l'utente del potenziale impatto sulle prestazioni. Anche in questo caso, sarà ancora un po 'più efficiente rispetto allo script della propria logica di polling usando un evento On Update .
Nell'elemento dizionario aggiunto e nell'elemento dizionario Rimosso funziona in modo simile e ha un costo di runtime pari a zero purché non cambi nulla.
In Trigger Enter e On Trigger Exit non sono presenti potenziali pericoli per le prestazioni degli eventi On Collision corrispondenti (vedere sopra).