Roblox GuidebookWissensbibliothek
Deutsch ⌄

Entwicklung / ROBLOX

False-Einstellungen in Luau: Warum ein Standardwert die Musik wieder einschaltet

Bewahre in einer eigenen Musikaufgabe eine bewusst gewählte Einstellung false. Verwende einen Standardwert nur für fehlende Angaben und unterscheide diese von ungültigen Eingaben, bevor du ein Menü oder gespeicherte Daten anschließt.

Aktualisiert:

Lege die Bedeutung der Werte fest #

Stell dir ein erfundenes Inselspiel mit einer Einstellung für Hintergrundmusik vor. Ein Spieler schaltet die Musik aus; die Übungsdaten enthalten deshalb false. Ein neuer Spieler hat noch keine Auswahl getroffen; dieser Eingang ist nil. Der Entwickler möchte die Musik nur im zweiten Fall standardmäßig einschalten. Diese Vereinbarung trennt eine bewusste Entscheidung von fehlenden Informationen, bevor eine kurze Formel beide Fälle vermischt.

Die Übung behauptet nicht, dass diese Einstellung bereits in unseren Spielen existiert. Wir beginnen mit einer gewöhnlichen Luau-Funktion und einfachen Werten. Sound, DataStore, Menüknöpfe und Netzwerkereignisse sind nicht angeschlossen. Diese Teile benötigen später eine eigene Umsetzung und Prüfungen in Studio. Notiere zuerst: true bedeutet eingeschaltet, false ausgeschaltet und nil, dass kein Wert geliefert wurde.

Stelle den Fehler mit or nach #

Der Ausdruck savedMusic or true wirkt wie eine bequeme Vorgabe. Doch or prüft nicht ausschließlich, ob Angaben fehlen. Laut offizieller Referenz liefert der Operator den ersten Operanden, wenn dieser als wahr gilt; andernfalls liefert er den zweiten. Bei savedMusic=false ergibt sich true. Eine ausdrücklich ausgeschaltete Einstellung wird dadurch bei der Auswertung wieder eingeschaltet.

Führe einen kurzen Versuch mit false aus und gib das Ergebnis aus. Wiederhole ihn mit true und nil. True bleibt erhalten; false und nil wählen den Ersatzwert. Das ist Sprachverhalten und kein Beweis für einen fehlgeschlagenen Ladevorgang. Schreibe gespeicherte Daten nicht vorschnell neu: Eine falsche Auswertung kann einen korrekt gelesenen Eingang erst nach dem Laden verfälschen.

Auswahl ersetztBild in voller Größe öffnen ↗
Fehler beim Ersatzwert;eigenes Lehrdiagramm.
local savedMusic = false
print(savedMusic or true)
print(0 or 9)
print(true and false or true)

Verwechsle null und leeren Text nicht mit Ausschalten #

In Luau gelten false und nil als falsch, während die Zahl 0 und eine leere Zeichenfolge als wahr gelten. Deshalb liefert 0 or 9 weiterhin 0. Ein leerer Text mit einem Ersatztext über or bleibt leer. Eine leere Beschriftung bekommt durch diesen Ausdruck also nicht automatisch die gewünschte Erklärung. Prüfe den tatsächlichen Wert, bevor du das Anzeigeproblem zuordnest.

Für unsere Einstellung ist 0 trotzdem kein gültiger ausgeschalteter Zustand. Die Vereinbarung erlaubt boolesche Werte und nicht beliebige Werte mit irgendeinem Wahrheitsverhalten. Auch die Zeichenfolge "false" ist nicht das boolesche false. Nimm solche Werte als ungültige Eingaben in die Prüfung auf. Eine erfolgreiche if-Bedingung beweist weder den richtigen Typ noch eine bestätigte Entscheidung des Spielers.

Ersetze nur nil durch eine ausdrückliche Prüfung #

Die Funktion booleanPreference prüft zunächst raw==nil. Nur dieser Zweig verwendet den vereinbarten defaultValue. Bei einem vorhandenen Wert prüft sie getrennt type(raw)=="boolean". Tatsächliche Werte true und false werden unverändert weitergegeben. Eine Zahl oder Zeichenfolge wird abgelehnt statt still ersetzt. Fehlende Informationen bleiben damit von ausgeschalteten und fehlerhaften Einstellungen unterscheidbar.

Der defaultValue muss in dieser Übung selbst boolesch sein. Eine Assertion zeigt einen Programmierfehler beim Aufruf der Hilfsfunktion an. Das ist keine vollständige Fehlerstrategie für beliebige Eingaben in einem fertigen Menü. Lege fest, woher der erlaubte Standardwert stammt und was bei einer Ablehnung geschieht. Ungeprüfter Spielereingabetext sollte nicht unbemerkt die Vorgabe bestimmen.

local function booleanPreference(raw, defaultValue)
    assert(type(defaultValue) == "boolean")
    if raw == nil then
        return defaultValue, true
    end
    if type(raw) ~= "boolean" then
        return nil, false
    end
    return raw, true
end
local value, valid = booleanPreference(false, true)
print(value, valid)
value, valid = booleanPreference(nil, false)
print(value, valid)
value, valid = booleanPreference("false", true)
print(value, valid)

Trenne Ergebniswert und Erfolg #

Die Funktion gibt zwei Ergebnisse zurück: die Einstellung und valid. Eine gültige ausgeschaltete Auswahl ist false,true. Eine Ablehnung ist nil,false. Prüft der aufrufende Code nur das erste Ergebnis, kann eine korrekte ausgeschaltete Einstellung im gleichen Zweig landen wie ein Fehler. Prüfe zuerst valid und verwende danach value. Erfolg und eingeschalteter Zustand sind unterschiedliche Fragen.

Ein späterer Menühandler könnte false,true erhalten und die ausgeschaltete Auswahl anzeigen. Nil,false benötigt dagegen einen vorher festgelegten Fehlerpfad statt einer automatischen Aktivierung. Dieser Artikel legt keine vollständige Produktentscheidung fest. Den letzten bestätigten Zustand beizubehalten und das Problem zu melden kann zu deinem Entwurf passen. Entscheidend ist, eine Ablehnung nicht als neue Auswahl des Spielers darzustellen.

Drei getrennte ErgebnisseBild in voller Größe öffnen ↗
Fehlend,ausgeschaltet,abgelehnt;eigenes Diagramm.

Untersuche die and/or-Abkürzung #

Mit condition and selectedValue or fallback wird gelegentlich eine kurze Auswahl geschrieben. Sie bewahrt jedoch nicht jedes gültige selectedValue. Sind condition=true und selectedValue=false, entsteht zunächst false; anschließend wählt or den Ersatzwert. True and false or true ergibt deshalb wieder true. Eine wahre Bedingung schützt einen falschen Ergebniswert in dieser Schreibweise nicht.

Verwende einen ausdrücklichen Zweig, wenn das ausgewählte Ergebnis false oder nil sein darf. Wenige Zeichen sind kein Korrektheitsnachweis. Behalte einen Test mit wahrer Bedingung und falschem Auswahlwert bei: Beispiele mit ausschließlich true würden den Fehler übersehen. Der vorhandene Schwellenwertartikel wählt den ersten passenden Zahlenzweig; hier bewahren wir dagegen ein Ergebnis, das die Sprache als falsch bewertet.

Führe eine Eingangsmatrix aus #

Prüfe gültige Fälle einzeln: false mit Vorgabe true muss false,true liefern. True mit Vorgabe false muss true,true liefern. Nil mit Vorgabe true ergibt true,true. Ergänze nil mit Vorgabe false als umgekehrten Fall fehlender Angaben. Schreibe Erwartungen vor der Ausführung auf, damit ein versehentlich eingeschaltetes Ergebnis nicht unbemerkt zum neuen Sollzustand wird.

Übergebe danach 0, eine leere Zeichenfolge, den Text "false" und die Zahl 1. Alle müssen nach unserer Vereinbarung nil,false liefern. Prüfe beide Ergebnisse statt nur das Ausbleiben eines Absturzes. Die eigenen Assertions wurden tatsächlich in einem separaten Luau-Interpreter ausgeführt. Das bestätigt diese Datenoperationen, aber weder hörbare Musik noch Knopfbedienung oder gespeicherte Einstellungen in Roblox.

EingangErgebnis
falsefalse, true
truetrue, true
nildefaultValue, true
0 / "false"nil, false

Schließe das Menü in einem getrennten Schritt an #

Beschreibe nach der Funktionsprüfung die Datenquelle, den Abschluss des Lesens und den bestätigten Zustand für das Menü. Erneutes Öffnen soll eine ausgeschaltete Einstellung bewahren. Fehlende Angaben erhalten die vereinbarte Vorgabe im vorgesehenen Szenario. Ein erneutes Anzeigen darf false nicht allein deshalb neu als Abwesenheit interpretieren, weil dieselbe Oberfläche nochmals aufgebaut wird.

Übertrage einen erfolgreichen Datentest nicht auf DataStore oder den Server. Lesefehler, fehlender Datensatz und abgelehnter Typ können unterschiedliche Behandlung benötigen. Serverprüfungen und zuverlässige Fehlerpfade bleiben eigene Aufgaben. Überschreibe einen Datensatz nicht mit einer Vorgabe, nur weil das Menü vor Abschluss des Lesens erschien. Beschreibe diese zeitlichen Fälle vor der Umsetzung des Speicherns.

Hinterlasse eine wiederholbare Übergabe #

Notiere erlaubte Typen, die Bedeutung von nil, beide Rückgabewerte und Ablehnungsfälle. Füge Quelldateien und das tatsächliche Prüfergebnis bei. Das hilft mehr als die Aussage, die Musik sei repariert: Ein anderer Entwickler kann den Datentest ohne Zugriff auf eine Spielsitzung wiederholen. Nutze erfundene Eingaben und halte echte Spielerkennungen und Zugangsdaten aus Übungsdateien heraus.

Ändert sich die Vereinbarung später, aktualisiere Hilfsfunktion, Erwartungen und Erklärung gemeinsam. Ein zusätzlicher Textmodus benötigt eine ausdrückliche Umwandlung und neue Prüfungen statt des einfachen Entfernens der Typprüfung. Trenne Produktentscheidung und Sprachverhalten. Die offizielle Referenz erklärt die Operatoren; dein Projekt legt fest, welche Einstellungswerte sinnvoll und erlaubt sind.

Prüfe das Ergebnis vor der Übergabe #

Die Übung gelingt, wenn ein gespeichertes false erhalten bleibt, nil nur die vereinbarte Vorgabe bekommt und ungeeignete Typen getrennt abgelehnt werden. Prüfe beide möglichen Standardwerte sowie wiederholte Aufrufe. Stelle sicher, dass der aufrufende Code valid zur Erfolgskontrolle verwendet. Suche nach and/or-Ausdrücken an Stellen, an denen ein erlaubtes Ergebnis false sein kann.

Nach dem Anschluss folgen Prüfungen am tatsächlichen Studio-Menü und getrennt am Speichern und erneuten Lesen. Das sind zukünftige Schritte, keine bereits beobachteten Spielsitzungen. Eigene Beispiele und offizielle Quellen erklären die Fehlerursache, bedeuten aber keine Änderung einer vorhandenen Spielversion. Halte das bestätigte Funktionsergebnis und das spätere Ergebnis im Spiel getrennt fest.

PrüfungAktion
Typboolean
Fehlender WertGetrennter nil-Zweig
Ergebnisvalue und valid trennen
IntegrationIn Studio prüfen

Originalquellen

Roblox Creator Hub — Operators