Informazioni di riferimento sul nodo Scripting visual mesh
Passare all'articolo Panoramica di Visual Scripting
Intervallo
Il nodo dell'evento On Interval attiva un flusso di script in intervalli di tempo regolari sincronizzati tra tutti i client nella stessa sala.
- Intervallo: intervallo (in secondi) tra gli eventi.
- Ritardo: ritardo (in secondi) prima del primo evento. È possibile usarlo per interleavere gli eventi con lo stesso intervallo attivato da nodi intervallo diversi.
In stato modificato
Il nodo dell'evento On State Changed viene attivato quando uno dei relativi input modifica il valore. Si tratta di un meccanismo potente che consente agli script di rispondere alle modifiche dello stato causate dall'interazione dell'utente o da altri script visivi, sia in locale che in altri client nella stessa stanza.
- Valori: specifica il numero di porte di input che si desidera osservare. È possibile osservare contemporaneamente fino a 10 porte di input. In Modifica stato viene attivato quando uno di essi modifica il relativo valore.
- In 0, In 1 e altro ancora in questa sequenza: input osservati per le modifiche di stato. È possibile collegare qualsiasi nodo dati a questi input: Recupera variabile o qualsiasi proprietà del componente (istanza o statica).
- Out 0, Out 1 e altro ancora in questa sequenza: output corrispondenti agli input In 0 (e così via) che restituiscono i valori osservati.
Quando si osservano variabili di script o proprietà del componente, On State Changed funziona in genere registrando internamente i callback appropriati, evitando la necessità di rivalutare costantemente gli input. Quando un callback appropriato non è disponibile, come nell'esempio seguente, il nodo On State Changed diventa rosso e il pannello Controllo grafico avvisa che l'input non può essere osservato in modo efficiente ed è quindi disabilitato:
In questo caso, è possibile selezionare Consenti polling nel pannello Controllo grafico di forzare Su stato modificato per rilevare le modifiche rivalutandone costantemente gli input. Il nodo mantiene una barra gialla lungo la parte superiore per ricordare che osserva un input a un costo di runtime aumentato.
Mostra finestra di dialogo
Il nodo Mostra finestra di dialogo visualizza una finestra di dialogo con un messaggio personalizzato e uno o più pulsanti che consentono all'utente di ignorare la finestra di dialogo.
- Testo: messaggio visualizzato nella finestra di dialogo. Se necessario, il testo del messaggio verrà racchiuso tra parole.
- Pulsanti: selezione dei pulsanti da presentare all'utente. È possibile visualizzare i pulsanti seguenti: OK, Annulla, Sì, No, Conferma, Avanti, Riprova, Continua, Lascia.
- Risultato: nome variabile in cui archiviare la risposta dell'utente quando ignora la finestra di dialogo selezionando un pulsante. Se lasciato vuoto, la risposta viene rimossa.
- Destinazione: GameObject con un componente Variables per archiviare la risposta dell'utente.
Se viene definita una variabile Result , verrà reimpostata su una stringa vuota non appena viene immesso il nodo Mostra finestra di dialogo e impostata sulla risposta dell'utente in modo asincrono quando l'utente seleziona un pulsante per chiudere la finestra di dialogo. Il valore archiviato è l'etichetta non localizzata del pulsante dall'elenco precedente. Usare un nodo evento On State Changed per reagire alla risposta dell'utente, come nell'esempio seguente:
La variabile Result può essere locale o condivisa. Se viene condivisa, la risposta dell'utente viene inviata a tutti i client nella stessa sala e il nodo dell'evento On State Changed attiva tutti i client per reagire alla risposta dell'utente.
Nodi degli eventi di fisica
I nodi degli eventi di fisica On Trigger Enter, On Trigger Exit, On Collision Enter e On Collision Exit sono collegati in modo affidabile. Per impostazione predefinita, questi eventi si attivano in modo affidabile su tutti i client nella stanza; Tuttavia, se il collisore fisico osservato da questi nodi eventi è nell'ambito di un componente Ambito fisica locale, gli eventi si attivano in modo affidabile su un solo client. Ciò consente ai flussi di script attivati di leggere e scrivere in modo affidabile lo stato condiviso( ad esempio, aggiornare una variabile di punteggio condiviso).
Sicurezza
Mesh protegge gli utenti da scenari di minacce come questi:
- Contenuto della scena compromesso, ad esempio tentativi dannosi di accedere ai dati locali sensibili.
- Canale di trasporto o client compromesso, ad esempio tentativi dannosi di leggere o scrivere dati remoti inaccessibili su altri client.
A tale scopo, Mesh esegue script visivi in una sandbox (ad esempio JavaScript in un Web browser).
All'avvio della scena, Mesh usa un elenco di elementi consentiti curato per convalidare gli script visivi per limitare l'accesso a determinati tipi di componenti Unity e a un subset sicuro delle relative proprietà.
In fase di esecuzione della scena, mesh limita l'accesso a determinate parti della scena:
- Localmente: impedendo l'accesso agli elementi interni mesh e ad altri dati sensibili.
- Remoto: verificando che l'autore della scena intenda modificare questa parte della scena. Questa operazione viene eseguita analizzando in modo statico gli script visivi sul lato del ricevitore per le potenziali scritture della scena.
Esempi:
- Uno script visivo locale dannoso vuole dare a tutti gli avatar bobble teste. A tal fine, tenta di analizzare l'intera scena per GameObject che rappresentano teste avatar. Mesh filtra automaticamente i risultati dell'analisi per escludere il sistema avatar.
- Un client remoto dannoso vuole defacere la scena capovolgendo tutti gli oggetti GameObject. A tale scopo, invia un aggiornamento delle proprietà che imposta la scala verticale di ogni GameObject nella scena. Tuttavia, poiché nessun script visivo nel client ricevente è progettato per eseguire operazioni simili, il client locale ignora l'input remoto.