Einführung in Arrays

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

Datenstrukturen sind die Art und Weise, wie Programmierer ganze Datensätze speichern und organisieren. In Luau werden Datenstrukturen mit Tabellen erstellt. Tabellen können beliebig viele Werte enthalten.

Dieser Artikel behandelt die Verwendung von Arrays, einem speziellen Tabellentyp, um einen sprechenden Charakter zu erstellen.

Tabellen

Tabellen sind Datentypen, die mehrere Werte halten können. Im Gegensatz zu anderen Datentypen, die einen einzelnen Wert speichern, haben Tabellen keine feste Größe und können eine Mischung aus verschiedenen Werttypen enthalten. Mit Tabellen können Sie Gegenstände im Inventar eines Spielers speichern oder eine Liste von Tausenden von Spielernamen erstellen.

Arrays

Es gibt verschiedene Arten von Tabellen. Eine Art ist ein Array, das Listen von Werten in einer bestimmten Reihenfolge speichert. Um ein Array zu erstellen, erstellen Sie eine Variable und weisen Sie ihr geschweifte Klammern { } zu. Trennen Sie die Werte innerhalb der Klammern mit Kommas, wie unten gezeigt:

local myArray = {"item1", "item2", 10, workspace.Part, myVariable}

Erstellen Sie einen sprechenden Charakter

Um Arrays zu erkunden, arbeiten Sie mit einem nicht spielbaren Charakter (NPC), der, wenn er angeklickt wird, eine andere Dialogzeile anzeigt.

Dieses Projekt verwendet ein vorgefertigtes NPC-Modell, das ein teilweise Skript und einen Prompt-Detektor enthält, aber keinen Dialog hat.

  1. Laden Sie die Vorlage NPC herunter.

  2. Importieren Sie den NPC im Explorer, indem Sie mit der rechten Maustaste auf WorkspaceInsert From File klicken und die heruntergeladene Datei auswählen.

Programmieren Sie ein Dialog-Array

Diese Schritte verwenden ein Array, um verschiedene Phrasen zu speichern, die der NPC sagt, wenn Spieler mit ihm interagieren.

  1. Gehen Sie im Explorer zu NPCProximityPromptChatManager.

  2. Erstellen Sie im ChatManager, wo im Skript markiert, ein leeres Array, um Dialogoptionen zu speichern.

    -- Durchläuft den Chat-Dialog, wenn der Prompt verwendet wird
    local Chat = game:GetService("Chat")
    local prompt = script.Parent
    local npc = prompt.Parent
    local characterParts = npc.CharacterParts
    local head = characterParts.Head
    -- Fügen Sie hier das Array hinzu
    local dialogueArray = {}
    local function speak()
    local dialogue = "Ich habe nur eine Sache zu sagen!"
    Chat:Chat(head, dialogue)
    end
    prompt.Triggered:Connect(speak)
  3. Geben Sie innerhalb der Klammern {} des gerade erstellten Arrays mindestens drei Dialogzeilen ein, die durch Kommas getrennt sind.

    local dialogueArray = {"Hallo!", "Kenne ich dich?", "Auf Wiedersehen!"}

Verwenden Sie Array-Indizes

Jeder Wert im Array wird einer Index-Nummer zugewiesen. Indizes werden den Werten in der Reihenfolge zugewiesen, in der die Werte gespeichert sind. Der erste Wert hat den Index 1, der zweite den Index 2 und so weiter.

Einige Programmiersprachen, wie Java, beginnen die Indizes bei 0.

Im gerade erstellten Array steht "Hallo!" an Index 1 und "Auf Wiedersehen!" an Index 3.

IndexWert
1Hallo!
2Heute ist ein großartiger Tag!
3Auf Wiedersehen!

Verwenden Sie spezifische Indexwerte

Verwenden Sie Indexwerte, um spezifische Dialogzeilen dem NPC zuzuweisen. Um einen Wert an einem bestimmten Index zu verwenden, fügen Sie den Index in Klammern direkt nach dem Namen des Arrays hinzu, wie dialogueArray[1].

  1. Ersetzen Sie den Standardwert der dialogue-Variablen durch Index 2.

    local dialogueArray = {"Hallo!", "Kenne ich dich?", "Auf Wiedersehen!"}
    local function speak()
    local dialogue = dialogueArray[2]
    Chat:Chat(head, dialogue)
    end
  2. Testen Sie das Spiel und klicken Sie auf den NPC. Der zweite Arraywert sollte in der Sprechblase erscheinen. Versuchen Sie, den Code zu ändern, um jeden Wert in der Tabelle zu testen.

Ändern Sie die Dialogzeilen

Wenn der Spieler mit dem NPC interagiert, sagt der NPC immer die gleiche Zeile. Das ist langweilig. Verwenden Sie stattdessen eine Variable, um zu aktualisieren, welchen Indexwert Sie verwenden möchten.

Jedes Mal, wenn ein Spieler mit dem NPC interagiert, erhöhen Sie den Variablenwert um 1, um die nächste Dialogzeile anzuzeigen.

  1. Um den aktuellen Index zu verfolgen, fügen Sie eine neue Variable namens dialogueIndex hinzu. Setzen Sie die Variable auf 1, um am Anfang des Arrays zu beginnen.

    local dialogueArray = {"Hallo!", "Kenne ich dich?", "Auf Wiedersehen!"}
    local dialogueIndex = 1
  2. Ersetzen Sie in speak() die Indexnummer in dialogueArray[2] durch die Variable, die Sie gerade erstellt haben.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    end
  3. Fügen Sie am Ende der Funktion 1 zu dialogueIndex hinzu. Das nächste Mal, wenn speak() aufgerufen wird, wird der Dialog die nächste Zeichenfolge anzeigen.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex += 1
    end
  4. Testen Sie das Spiel und klicken Sie auf den NPC, um jede Dialogzeichenfolge aus dem Array zu sehen.

Beachten Sie, dass ein Fehler im Ausgabefenster angezeigt wird, sobald das Skript das Ende des Arrays erreicht.

Sie werden dies im nächsten Abschnitt beheben, damit der Dialog nach der letzten Zeichenfolge wieder von vorne beginnt.

Array-Größen

Sie können die Größe des Arrays verwenden, um zu wissen, wann Sie den gewünschten Index auf 1 zurücksetzen müssen. Finden Sie die Größe eines Arrays, indem Sie #, ohne Leerzeichen, vor den Namen eines Arrays schreiben.

Zum Beispiel: #dialogueArray

Überprüfen Sie die Größe des Arrays im Vergleich zum aktuellen Wert der Variablen, um zu wissen, wann es Zeit ist, wieder von vorne zu beginnen.

Dialog neu starten

Verwenden Sie die Array-Größe, um zu überprüfen, wann es Zeit ist, zum ersten Dialog zurückzukehren.

  1. Fügen Sie eine if-Anweisung hinzu und überprüfen Sie, ob dialogueIndex gleich #dialogueArray, der Gesamtgröße dieses Arrays, ist. Wenn ja, setzen Sie dialogueIndex auf 1.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    if dialogueIndex == #dialogueArray then
    dialogueIndex = 1
    end
    dialogueIndex += 1
    end
  2. Wenn dialogueIndex nicht am Ende ist, sollte es weiterhin 1 zu dialogueIndex hinzufügen. Verschieben Sie dialogueIndex += 1 unter eine else-Anweisung.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex = if dialogueIndex == #dialogueArray then 1 else dialogueIndex + 1
    end
  3. Spielen Sie und bestätigen Sie, dass Sie durch den Dialog blättern und ihn neu starten können.

Zusammenfassung

Datenstrukturen sind die Art und Weise, wie Datensätze gespeichert werden. Luau verwendet Tabellen zur Erstellung von Datenstrukturen. Arrays sind eine Art von Tabelle, die geordnete Listen von Informationen halten kann. Jeder Wert innerhalb des Arrays wird einer Indexnummer zugewiesen, beginnend mit Index 1.

Dieses Skript verwendete ein Array, um eine Liste möglicher Dialogzeilen für einen nicht spielbaren Charakter (NPC) zu erstellen.

Vollständiges Skript
-- Durchläuft den Chat-Dialog, wenn der Prompt verwendet wird
local Chat = game:GetService("Chat")
local prompt = script.Parent
local npc = prompt.Parent
local characterParts = npc.CharacterParts
local head = characterParts.Head
-- Fügen Sie hier das Array hinzu
local dialogueArray = {"Hallo!", "Kenne ich dich?", "Auf Wiedersehen!"}
local dialogueIndex = 1
local function speak()
local dialogue = dialogueArray[dialogueIndex]
Chat:Chat(head, dialogue)
dialogueIndex = if dialogueIndex == #dialogueArray then 1 else dialogueIndex + 1
end
prompt.Triggered:Connect(speak)

Fehlersuche Tipps

Wenn der Charakter nicht durch das Array von Dialogen geht, versuchen Sie die folgenden Tipps zur Fehlersuche.

  • Überprüfen Sie die if-Anweisung, dass dialogueIndex auf 1 zurückgesetzt wird. Überprüfen Sie in der else-Anweisung, dass dialogueIndex 1 hinzugefügt wird.
  • Stellen Sie sicher, dass beim Abrufen der Größe des Arrays keine Leerzeichen nach dem # in #dialogueArray vorhanden sind.

Optionale Herausforderungen

Versuchen Sie eine der optionalen Herausforderungen unten.

  • Programmieren Sie das Skript so, dass der Dialog des NPC rückwärts durch das Array geht. Der Dialogindex sollte bei der Länge des Arrays beginnen und jedes Mal subtrahiert werden, anstatt addiert zu werden.
  • Anstatt den Dialog in der Reihenfolge anzuzeigen, lassen Sie den NPC jedes Mal eine zufällige Dialogzeile anzeigen, indem Sie Random.new() verwenden. Ein Beispielskript ist unten zur Referenz enthalten.
local randomGenerator = Random.new()
-- Zeigt einen neuen Dialog an, wann immer der NPC angeklickt wird
local function speak()
local randomIndex = randomGenerator:NextInteger(1, #dialogueArray)
local dialogue = dialogueArray[randomIndex]
Chat:Chat(head, dialogue)
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.