Costanti
Una costante è un indirizzo di memoria il cui valore allocato non può cambiare in fase di esecuzione del programma.
Per creare una costante, devi specificarne l'identificatore e il tipo, noto come dichiarazione di una costante, e fornire un valore per la costante, noto come inizializzazione di una costante.
Una costante deve essere inizializzata quando viene dichiarata e deve essere dichiarata prima di essere utilizzata.
La creazione delle costanti è caratterizzata dalla seguente sintassi:
Identifier : type = expressionLe costanti dichiarate in una funzione possono omettere il tipo:
Identifier := expressionSe il tipo viene omesso, il tipo della costante viene dedotto dall'espressione utilizzata per inizializzare la costante. Solo le costanti locali possono omettere il tipo dal momento che esso descrive come si può utilizzare la costante. Una costante in un modulo fa parte dell'interfaccia del modulo che la contiene. Senza la specificazione del tipo, l'interfaccia non risulta evidente.
Nell'esempio seguente, un numero casuale viene generato in ogni iterazione del loop e utilizzato per inizializzare la costante RandomNumber. Il numero casuale interrompe il ciclo solo se è inferiore a venti.
loop:
Limit := 20
# For local constants, the type can be omitted.
RandomNumber : int = GetRandomNumber()
# Providing the type explicitly can make the code easier to read.
if (RandomNumber < Limit):
breakNota: in ogni iterazione del loop, viene introdotta una nuova costante chiamata RandomNumber e le viene assegnato come valore il risultato di GetRandomNumber().
Variabili
Oltre alle costanti descritte in precedenza, Verse presenta anche una serie di variabili.
Le variabili sono simili alle costanti, ma sono definite con la parola chiave var, il che significa che è possibile cambiare i loro valori in qualsiasi momento.
Ad esempio,
var MaxHealthUpgrade : int = 10è una variabile intera e il suo valore può non essere sempre 10.
La creazione delle variabili è caratterizzata dalla sintassi seguente:
var Identifier : type = expressionNota che per le variabili il tipo deve essere sempre specificato esplicitamente.
Una volta creata una variabile, puoi assegnarle un valore differente attraverso la sintassi seguente:
set Identifier = expressionOltre a =, è possibile utilizzare una serie di altri operatori per modificare una variabile. Ad esempio,
var X:int = 0
set X += 1
set X *= 2Variabili globali
Una variabile definita in un modulo è globale per ogni istanza di gioco in esecuzione per cui la variabile è in ambito.
Un modo per dichiarare una variabile con ambito modulo in Verse è utilizzare il tipo weak_map(session, t) dove il tipo di chiave è il tipo dell'istanza attuale dell'isola di Fortnite, o session, e il tipo di valore è qualsiasi tipo t. Per maggiori dettagli su weak_map, vedi Mappa.
L'esempio seguente mostra come creare una variabile intera globale chiamata GlobalInt che viene incrementata ogni volta che viene chiamata ExampleFunction().
using { /Verse.org/Simulation } # For session
var GlobalInt:weak_map(session, int) = map{}
ExampleFunction():void=
X := if (Y := GlobalInt[GetSession()]) then Y + 1 else 0
if:
set GlobalInt[GetSession()] = X
Print("{X}")Le variabili con ambito modulo che utilizzano il tipo di sessione come chiave presentano le limitazioni seguenti:
Puoi accedere solo ai valori per la sessione corrente in cui ti trovi e per nessun'altra sessione.
La variabile con ambito modulo
weak_mapnon può essere letta o scritta per intero, quindi non ti consente di leggere o eseguire l'override dei valori per tutte le sessioni.Non è possibile iterare tra i valori di una
weak_mapo vedere quante sessioni sono attualmente attive, perché unaweak_mapnon ha lunghezza.
Dati persistenti
Tranne le variabili con ambito modulo associate alla session, una variabile con ambito modulo richiede persistenza e l'archiviazione dei dati oltre la partita in corso.
Puoi dichiarare una variabile persistente in Verse utilizzando il tipo weak_map(player, t). Qualsiasi tipo rappresentato da t che è persistente può essere archiviato ed è accessibile per un determinato giocatore e i dati possono essere visibili durante le seguenti sessioni di gioco. Ogni volta che un giocatore entra in una partita, i dati salvati in precedenza vengono caricati in tutte le variabili con ambito modulo di tipo weak_map(player, t).
Nell'esempio seguente, la variabile 'weak_map' globale MySavedPlayerData utilizza il tipo di giocatore come chiave e un intero come valore. Una volta definiti i tuoi dati persistenti, devi inizializzare i dati per ogni giocatore. Puoi farlo tramite un controllo per vedere che non siano già presenti dati archiviati per il giocatore e poi aggiungendo il giocatore e un valore iniziale alla weak_map.
using { /Fortnite.com/Devices }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Simulation }
var MySavedPlayerData:weak_map(player, int) = map{}
# A Verse-authored creative device that can be placed in a level
persistence_example := class(creative_device):
# Runs when the device is started in a running game
Le variabili con ambito modulo che utilizzano il tipo di giocatore come chiave presentano le limitazioni seguenti:
L'accesso ai dati persistenti del giocatore è permesso solo quando il giocatore è nella partita attuale.
Se un giocatore esce dalla partita o non è nella sessione in corso, non puoi più archiviare o accedere ai suoi dati in quella sessione di gioco. Se il giocatore torna o gioca di nuovo la stessa partita, puoi accedere e aggiornare i suoi dati.
La variabile con ambito modulo
weak_mapnon può essere letta o scritta completamente, quindi non ti consente di leggere o eseguire l'override dei valori per tutti i giocatori.Non è possibile iterare tra i valori di una
weak_mapo vedere quanti giocatori hanno un record nellaweak_map, perché unaweak_mapnon ha lunghezza.Una singola isola può avere fino a due variabili persistenti, cioè due variabili
weak_mapconplayercome tipo di chiave.Se è soddisfatto il criterio del limite per il numero massimo di variabili persistenti, almeno un valore
weak_mapdella variabile persistente deve essere una classe.Un singolo record della
weak_mapha una dimensione massima dei dati di 128 kilobyte (KB) per giocatore.
Per maggiori dettagli sulla persistenza in Verse, consulta Utilizzo dei dati persistenti in Verse.