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, was unter mehreren Bedingungen passieren soll. Die Syntax sieht folgendermaßen aus:

Zeigt die Syntax für elseif und else
if isGreen then
print("Go")
elseif isYellow then
print("Slow")
elseif isPedestrians then
print("Wait")
else
print("stop")
end

In diesem Projekt werden else und elseif verwendet, um einen Parkour-Kurs 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 kostet viel Zeit. Nehmen wir zum Beispiel den imaginären Code unten.

Alle if-Anweisungen
if finishTime < 5 then
-- Erhalte eine Goldmedaille
end
if finishTime >= 5 and <= 10 then
-- Erhalte eine Silbermedaille
end
if finishTime > 10 and <= 15 then
-- Erhalte eine Bronzemedaille
end

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

Verwendet elseif und else
if finishTime < 5 then
-- Erhalte eine Goldmedaille
elseif finishTime >= 5 and <= 10 then
-- Erhalte eine Silbermedaille
elseif finishTime > 10 and <= 15 then
-- Erhalte eine Bronzemedaille
end

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

Richten Sie die Rennstrecke ein

Beginnen Sie damit, den Startpunkt und die Ziellinie des Kurses zu platzieren, und erstellen Sie dann ein Skript, um die Zeit des Spielers zu messen und verschiedene Medaillen zu verleihen.

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

    Finish Teil
    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 mit dem Namen finish().

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

    • Codieren Sie eine Funktion mit dem Namen partTouched(), die finish() ausführt, wenn ein Spieler es berührt.
    • Verbinden Sie das Finish-Line-Teil mit partTouched().
    • Vergleichen Sie Ihren Code mit dem Beispiel unten.
    local function finish()
    print("Berührt die Ziellinie")
    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

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

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

  1. Erstellen Sie eine neue Variable mit dem Namen raceActive und setzen Sie sie auf true.

    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- Wird ausgeführt, wenn der Spieler das Teil der Ziellinie 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() erneut aufgerufen wird, setzen Sie raceActive auf false.

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

Zeit verfolgen

Wie eine if-Anweisung kann auch eine while-Schleife eine Bedingung verwenden, um zu sehen, ob sie ausgeführt werden soll. Um die Zeit des Spielers zu messen, erstellen Sie einen Timer mit einer while true do-Schleife, die nur ausgeführt wird, wenn die boolesche Variable raceActive true ist.

  1. Geben Sie am Ende des Skripts while raceActive == true do ein. Drücken Sie die Eingabetaste, um die Eingabe zu vervollständigen und end hinzuzufügen.

    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 Druckanweisung 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 Spiel und überprüfen Sie, ob Sie jede Sekunde im Ausgabefenster angezeigt bekommen.

Spieler-Medaillen verleihen

Um abzuschließen, verwenden Sie eine if-Anweisung mit mehreren Bedingungen, um den Spielern eine andere Preis-Medaille basierend auf ihrer Leistung zu verleihen. Verwenden Sie eine if-Anweisung und zwei elseif-Anweisungen, um die Zielzeit des Spielers zu überprüfen und ihnen die richtige Medaille zu verleihen.

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

    local function finish()
    raceActive = false
    print("Sie haben in " .. timePassed .. " abgeschlossen")
    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 .. " abgeschlossen")
    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 .. " abgeschlossen")
    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 .. " abgeschlossen")
    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.

Fehlersuche Tipps

Wenn Sie die Silber- und Bronzemedaillen nicht sehen, versuchen Sie eine der folgenden Lösungen.

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

Fügen Sie die else-Bedingung hinzu

Wenn der Spieler keine Medaille 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 dem letzten elseif und über end beginnen Sie eine neue Zeile und geben else ein. Fügen Sie nicht dann hinzu. Unter else verwenden Sie eine Druckanweisung, um sie zu ermutigen, es erneut zu versuchen.

    local function finish()
    raceActive = false
    print("Sie haben in " .. timePassed .. " abgeschlossen")
    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("Versuchen Sie 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 einzurichten, die überprüft werden soll, und fügen Sie dann so viele elseif-Bedingungen hinzu, wie nötig. Verwenden Sie schließlich else, um anzugeben, was passieren soll, wenn alle gegebenen Bedingungen falsch sind.

Beginnend von oben werden alle Bedingungen überprüft, und nur die erste wahre Bedingung führt den Code aus. Die verbleibenden Bedingungen werden nicht überprüft, noch wird ihr Code ausgeführt.

Nachdem Sie das Projekt abgeschlossen haben, können Sie das Skript erweitern, um auf einige zusätzliche Arten neue Elemente hinzuzufügen.

  • Fügen Sie Code hinzu, damit die 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ücken-Tutorial.
Abgeschlossenes Skript
local timePassed = 0
local finishLine = script.Parent
-- Wird verwendet, um finish() und den Timer zu verhindern, dass sie sich wiederholen, wenn das Rennen vorbei ist
local raceActive = true
-- Wird ausgeführt, wenn der Spieler die Ziellinie berührt und zeigt ihnen eine Auszeichnung
local function finish()
raceActive = false
print("Sie haben in " .. timePassed .. " abgeschlossen")
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("Versuchen Sie 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)
-- Verfolgt die Rennzeit, während das Rennen aktiv ist. Muss am Ende des Skripts stehen.
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.