Mehrere Bedingungen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Kontrollstrukturen können mehr als eine Bedingung haben. Die Schlüsselwörter else und elseif können zusätzliche Szenarien schaffen, für das, was unter mehreren Bedingungen geschehen sollte. Die Syntax sieht so aus:

Zeigt die Syntax für elseif und else

if isGreen then
print("Go")
elseif isYellow then
print("Langsam")
elseif isPedestrians then
print("Warten")
else
print("Stop")
end

In diesem Projekt werden else und elseif verwendet, um einen Parkourkurs zu codieren, bei dem Läufer je nach ihrer Zielzeit Auszeichnungen erhalten.

Mehrere Bedingungen codieren

Für dieses Projekt könnten Sie für jede Medaille eine einzigartige if-Anweisung schreiben, um die Spieler auszuzeichnen, aber das dauert viel Zeit. Nehmen wir zum Beispiel den imaginären Code unten.

Alle if-Anweisungen

if finishTime < 5 then
-- Erhalten Sie eine Goldmedaille
end
if finishTime >= 5 and <= 10 then
-- Erhalten Sie eine Silbermedaille
end
if finishTime > 10 and <= 15 then
-- Erhalten Sie eine Bronzemedaille
end

Eine leserlichere und effizientere Möglichkeit, dies zu codieren, besteht darin, eine einzige if-Anweisung zu verwenden und das Schlüsselwort elseif zu nutzen, um alternative Bedingungen bereitzustellen, um zu testen, ob die vorherigen Bedingungen nicht wahr sind.

Verwendet elseif und else

if finishTime < 5 then
-- Erhalten Sie eine Goldmedaille
elseif finishTime >= 5 and <= 10 then
-- Erhalten Sie eine Silbermedaille
elseif finishTime > 10 and <= 15 then
-- Erhalten Sie eine Bronzemedaille
end

Wenn die if/then-Anweisung ausgeführt wird, startet sie oben und führt nur den Code für die erste wahre Bedingung aus, die sie findet.

Richten Sie den Rennkurs ein

Beginnen Sie damit, den Startpunkt des Kurses und die Ziellinie festzulegen, und erstellen Sie dann ein Skript, um den Spieler zu timen und verschiedene Medaillen zu verleihen.

  1. Erstellen Sie ein befestigtes Teil mit dem Namen FinishLine. Um die Tests zu beschleunigen, platzieren Sie den Start und das Ende nah beieinander. Sie können die Ziellinie nach Abschluss des Skripts verschieben.

    Zielteil
    Gesamter Kurs
  2. Fügen Sie in FinishLine ein Skript mit dem Namen RaceManager ein. Fügen Sie dann eine Variable hinzu, um zu speichern, wie viele Sekunden seit dem Start des Rennens vergangen sind, und eine zweite Variable, um auf FinishLine zu verweisen.


    local finishLine = script.Parent
    local timePassed = 0
  3. Erstellen Sie eine Funktion namens finish().


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. Machen Sie es selbst:

    • Codieren Sie eine Funktion namens partTouched(), die finish() ausführt, wenn ein Spieler sie berührt.
    • Verbinden Sie das Zielteil mit partTouched().
    • Vergleichen Sie Ihren Code mit dem Beispiel unten.

    local function finish()
    print("Ziellinie berührt")
    end
    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    finish()
    end
    end
    finishLine.Touched:Connect(partTouched)
  5. Testen Sie das Spiel und überprüfen Sie, ob finish() aufgerufen wird, wenn Sie die Ziellinie berühren.

Verhindern, dass finish() wiederholt wird

Momentan wird finish() jedes Mal aufgerufen, wenn ein Spieler die Ziellinie berührt, solange der Spieler das Teil berührt.

Verwenden Sie ein Boolean, eine Variable, die true oder false speichert, um sicherzustellen, dass finish() nur einmal aufgerufen wird.

  1. Erstellen Sie eine neue Variable namens raceActive und setzen Sie sie auf true.


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- Wird ausgeführt, immer wenn der Spieler das Ziellinienteil berührt
    local function finish()
  2. Fügen Sie eine zweite Bedingung zur if-Anweisung hinzu, um zu überprüfen, ob raceActive true ist, bevor Sie finish() aufrufen.


    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and raceActive == true then
    finish()
    end
    end
  3. Um zu verhindern, dass finish() wieder aufgerufen wird, setzen Sie raceActive auf false.


    local function finish()
    print("Ziellinie berührt")
    raceActive = false
    end
  4. Testen Sie Ihr Erlebnis, um zu überprüfen, ob Sie Ihre Testausgabe nur einmal sehen.

Zeit im Auge behalten

Wie eine if-Anweisung kann auch eine while-Schleife eine Bedingung verwenden, um zu sehen, ob sie ausgeführt werden soll. Um den Spieler zu timen, erstellen Sie einen Timer mit einer while true do-Schleife, die nur ausgeführt wird, wenn das raceActive-Boolean true ist.

  1. Geben Sie am Ende des Skripts while raceActive == true do ein. Drücken Sie Enter, um den Befehl zu vervollständigen, und fügen Sie das end hinzu.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    end
  2. Um die Spieler zu timen, fügen Sie in der Schleife einmal pro Sekunde 1 zur Variable timePassed hinzu. Fügen Sie eine Print-Anweisung hinzu, um Ihre Arbeit zu testen.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. Testen Sie das Erlebnis und überprüfen Sie, ob Sie jede Sekunde im Ausgabefenster angezeigt bekommen.

Spieler-Medaillen verleihen

Um zu enden, verwenden Sie eine if-Anweisung mit mehreren Bedingungen, um Spielern eine andere Preismedaille basierend auf ihrer Leistung zu verleihen. Verwenden Sie eine if-Anweisung und zwei elseif-Anweisungen, um die Zielzeit des Spielers zu überprüfen und ihm die richtige Medaille zu verleihen.

  1. Um zu bestätigen, dass jede Medaille verliehen werden kann, verwenden Sie Print-Anweisungen.


    local function finish()
    raceActive = false
    print("Sie haben in " .. timePassed .. " Minuten beendet")
    end
  2. Um eine Goldmedaille zu verleihen, codieren Sie eine if-Anweisung, die timePassed mit der gewünschten Zielzeit vergleicht. Dieses Beispiel überprüft, ob die Zeit des Spielers weniger als oder gleich 10 Sekunden war.


    local function finish()
    raceActive = false
    print("Sie haben in " .. timePassed .. " Minuten beendet")
    if timePassed <= 10 then
    print("Sie erhalten eine Goldmedaille!")
    end
    end
  3. Testen Sie und bestätigen Sie, dass die Goldmedaille verliehen werden kann.

Zusätzliche Bedingungen hinzufügen

Jetzt, da Sie die Goldmedaille getestet haben, codieren Sie Bedingungen für die anderen Medaillen mit dem Schlüsselwort elseif.

  1. Für die Silbermedaille verwenden Sie elseif und den nächsten gewünschten Zeitrahmen. In diesem Beispiel liegt der Bereich über 10 Sekunden, aber weniger als oder gleich 20 Sekunden.


    local function finish()
    raceActive = false
    print("Sie haben in " .. timePassed .. " Minuten beendet")
    if timePassed <= 10 then
    print("Sie erhalten eine Goldmedaille!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("Sie erhalten eine Silbermedaille!")
    end
    end
  2. Verwenden Sie dasselbe Muster für die Bronzemedaille. Überprüfen Sie Ihren Code mit dem Beispiel unten.


    local function finish()
    raceActive = false
    print("Sie haben in " .. timePassed .. " Minuten beendet")
    if timePassed <= 10 then
    print("Sie erhalten eine Goldmedaille!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("Sie erhalten eine Silbermedaille!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("Sie erhalten eine Bronzemedaille!")
    end
    end
  3. Testen Sie die Silber- und Bronzemedaille.

Fehlerbehebungstipps

Wenn Sie die Silber- und Bronzemedaillen nicht sehen, versuchen Sie eines der Folgenden.

  • Jede elseif-Anweisung sollte ein then nach ihrer Bedingung haben.
  • In partTouched() stellen Sie sicher, dass die zweite Bedingung der if-Anweisung == verwendet, wie in raceActive == true.
  • Überprüfen Sie, ob jede elseif im Gültigkeitsbereich ist. Jede elseif-Bedingung muss zwischen der ersten Zeile der if/then-Anweisung und der letzten end-Anweisung liegen.

Fügen Sie die else-Bedingung hinzu

Falls der Spieler keine Medaillen verdient hat, sollten Sie ihn ermutigen, es erneut zu versuchen. In diesem Fall können Sie eine else-Anweisung verwenden, die ausgeführt wird, wenn keine anderen Bedingungen wahr sind, um ihnen eine Nachricht anzuzeigen.

  1. Unter der letzten elseif und über end beginnen Sie eine neue Zeile und tippen Sie else. Fügen Sie kein then hinzu. Unter else verwenden Sie eine Print-Anweisung, um sie aufzufordern, es erneut zu versuchen.


    local function finish()
    raceActive = false
    print("Sie haben in " .. timePassed .. " Minuten beendet")
    if timePassed <= 10 then
    print("Sie erhalten eine Goldmedaille!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("Sie erhalten eine Silbermedaille!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("Sie erhalten eine Bronzemedaille!")
    else
    print("Versuche es erneut!")
    end
    end
  2. Testen Sie, um die else-Nachricht zu sehen.

Zusammenfassung

Kontrollstrukturen können mehr als ein Szenario haben. Verwenden Sie if-Anweisungen, um die anfängliche Anweisung festzulegen, die überprüft werden soll, und fügen Sie dann so viele elseif-Bedingungen hinzu, wie erforderlich. Schließlich verwenden Sie else, um anzugeben, was passieren sollte, wenn alle angegebenen Bedingungen falsch sind.

Beginnend an der Spitze werden alle Bedingungen geprüft, und nur die erste wahre Bedingung wird den Code ausführen. Die verbleibenden Bedingungen werden nicht geprüft, noch wird deren Code ausgeführt.

Nach Abschluss des Projekts können Sie das Skript erweitern, um neue Elemente auf verschiedene Arten hinzuzufügen.

  • Fügen Sie Code hinzu, damit Spieler das Rennen wiederholen können, indem sie die Startlinie berühren, wenn sie fertig sind.
  • Entwerfen Sie eine Möglichkeit, die Zeit während eines Rennens anzuzeigen. Sie können die Zeit entweder auf einem Teil mit einer Surface-GUI anzeigen, wie im Erstellen Sie ein zeitgesteuertes Brücke-Tutorial.
Abgeschlossenes Skript

local timePassed = 0
local finishLine = script.Parent
-- Wird verwendet, um zu verhindern, dass finish() und der Timer wiederholt werden, wenn das Rennen vorbei ist
local raceActive = true
-- Wird ausgeführt, wenn der Spieler die Ziellinie berührt und ihnen eine Auszeichnung zeigt
local function finish()
raceActive = false
print("Sie haben in " .. timePassed .. " Minuten beendet")
if timePassed <= 10 then
print("Sie erhalten eine Goldmedaille!")
elseif timePassed > 10 and timePassed <= 20 then
print("Sie erhalten eine Silbermedaille!")
elseif timePassed > 20 and timePassed <= 30 then
print("Sie erhalten eine Bronzemedaille!")
else
print("Versuche es erneut!")
end
end
-- Überprüft, ob ein Spieler das Teil berührt, wenn ein Rennen aktiv ist
local function partTouched(otherPart)
local character = otherPart.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and raceActive == true then
finish()
end
end
finishLine.Touched:Connect(partTouched)
-- Hält die Rennzeit fest, während das Rennen aktiv ist. Muss am Ende des Skripts sein.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end
©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.