Konstanten
Eine Konstante ist ein Ort, an dem ein Wert gespeichert wird. Ihr Wert kann sich während der Laufzeit des Programms nicht ändern.
Um eine Konstante zu erstellen, musst du ihre Kennung und ihren Typ angeben, was als Deklaration einer Konstante bezeichnet wird, und einen Wert für die Konstante angeben, was als Initialisieren einer Konstante bezeichnet wird.
Eine Konstante muss initialisiert werden, wenn sie deklariert wird, und sie muss deklariert werden, bevor sie verwendet werden kann.
Die Erstellung der Konstante hat die folgende Syntax:
Identifier : type = expressionIn einer Funktion deklarierte Konstanten können den Typ weglassen:
Identifier := expressionWenn der Typ weggelassen wird, wird der Typ der Konstanten aus dem Ausdruck abgeleitet, mit dem die Konstante initialisiert wird. Nur bei lokalen Konstanten kann der Typ weggelassen werden, da der Typ beschreibt, wie die Konstante verwendet werden kann. Eine Konstante in einem Modul bildet einen Teil des Interface des Moduls, das sie enthält. Ohne den Typ ist dieses Interface nicht offensichtlich.
Im folgenden Beispiel wird in jeder Iteration der Schleife eine Zufallszahl generiert und verwendet, um die Konstante RandomNumber zu initialisieren. Die Zufallszahl bricht nur dann aus der Schleife aus, wenn sie kleiner als zwanzig ist.
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):
breakBeachte, dass in jeder Schleifeniteration eine neue Konstante mit dem Namen RandomNumber eingeführt wird, der das Ergebnis von GetRandomNumber() als Wert zugewiesen wird.
Variablen
Zusätzlich zu den oben beschriebenen Konstanten gibt es in Verse auch Variablen.
Variablen ähneln Konstanten, werden aber mit dem Schlüsselwort var definiert, was bedeutet, dass du ihre Werte jederzeit ändern kannst.
Zum Beispiel,
var MaxHealthUpgrade : int = 10eine Ganzzahl-Variable, deren Wert nicht immer 10 sein muss.
Die Erstellung von Variablen hat die folgende Syntax:
var Identifier : type = expressionBeachte, dass bei Variablen der Typ explizit angegeben werden muss.
Nachdem du eine Variable erstellt hast, kannst du ihr mit der folgenden Syntax einen anderen Wert zuweisen:
set Identifier = expressionAbgesehen von = können eine Vielzahl anderer Operatoren verwendet werden, um eine Variable zu mutieren. Zum Beispiel,
var X:int = 0
set X += 1
set X *= 2Globale Variablen
Eine in einem Modul definierte Variable ist global für alle laufenden Spielinstanzen, bei denen sich die Variable im Gültigkeitsbereich befindet.
Eine Möglichkeit, eine modulbereichsbezogene Variable in Verse zu deklarieren, ist die Verwendung des Typs weak_map(session, t), wobei der Schlüsseltyp der Typ der aktuellen Fortnite-Inselinstanz bzw. session ist und der Wertetyp ein beliebiger Typ t. Details zu weak_map findest du unter Map.
Das folgende Beispiel zeigt, wie du eine globale Integer-Variable namens GlobalInt erstellst, die jedes Mal inkrementiert wird, wenn ExampleFunction() aufgerufen wird.
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}")Modulbereichsbezogene Variablen, die den Typ Sitzung als Schlüssel verwenden, haben die folgenden Einschränkungen:
Du kannst nur auf Werte für die aktuelle Sitzung zugreifen, nicht für andere Sitzungen.
Die modulbereichsbezogene Variable
weak_mapkann nicht vollständig gelesen bzw. es kann nicht vollständig in sie geschrieben werden. Deshalb können Werte nicht für alle Sitzungen gelesen oder überschrieben werden.Du kannst nicht durch die Werte einer
weak_mapiterieren oder sehen, wie viele Sitzungen gerade aktiv sind, weil eineweak_mapkeine Länge hat.
Dauerhafte Daten
Mit Ausnahme der modulbereichsbezogenen Variablen, die der Sitzung zugeordnet sind, erfordert eine modulbereichsbezogene Variable Persistenz, also das Speichern der Daten über das aktuelle Spiel hinaus.
Du kannst eine dauerhafte Variable in Verse deklarieren, indem du den Typ weak_map(player, t) verwendest. Jeder durch t dargestellte Typ, der persistent ist, kann für einen bestimmten Spieler gespeichert und aufgerufen werden, und die Daten können für nachfolgende Spielsitzungen sichtbar sein. Wenn ein Spieler einem Spiel beitritt, werden seine zuvor gespeicherten Daten in alle modulbereichsbezogenen Variablen des Typs weak_map(player, t) geladen.
In dem folgenden Beispiel verwendet die globale „weak_map“-Variable MySavedPlayerData den Spielertyp als Schlüssel und eine Ganzzahl als Wert. Wenn du deine dauerhaften Daten definiert hast, musst du die Daten für jeden Spieler initialisieren. Dazu kannst du prüfen, ob es bereits gespeicherte Daten für diesen Spieler gibt, und dann den Spieler und einen Anfangswert zu weak_map hinzufügen.
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
Modulbereichsbezogene Variablen, die den Typ Spieler als Schlüssel verwenden, haben die folgenden Einschränkungen:
Der Zugriff auf die dauerhaften Daten des Spielers ist nur zulässig, wenn sich der Spieler im aktuellen Spiel befindet.
Wenn ein Spieler ein Spiel verlässt oder sich nicht in der aktuellen Sitzung befindet, kannst du seine Daten in dieser Spielsitzung nicht mehr speichern oder darauf zugreifen. Wenn der Spieler zurückkehrt oder das gleiche Spiel erneut spielt, kannst du auf seine Daten zugreifen und sie aktualisieren.
Die modulbereichsbezogene Variable
weak_mapkann nicht vollständig gelesen bzw. es kann nicht vollständig in sie geschrieben werden. Deshalb können Werte nicht für alle Spieler gelesen oder überschrieben werden.Du kannst nicht durch die Werte einer
weak_mapiterieren oder sehen, wie viele Spieler über einen Datensatz in derweak_mapverfügen, weil eineweak_mapkeine Länge hat.Eine einzelne Insel kann bis zu zwei dauerhafte Variablen verwenden, also zwei
weak_map-Variablen mitplayerals Schlüsseltyp.Mindestens ein
weak_map-Wert der dauerhaften Variable muss eine Klasse sein, wenn das Limit für die maximalen dauerhaften Variablen erreicht wurde.Ein einzelner
weak_map-Datensatz hat eine maximale Datengröße von 128 Kilobyte (KB) pro Spieler.
Für weitere Einzelheiten zur Persistenz in Verse, schau dir Using Persistable Data in Verse an.