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, wie Programmierer gesamte Datensätze speichern und organisieren. In Luau werden Datenstrukturen mit Tabellen erstellt. Tabellen können eine beliebige Anzahl von Werten enthalten.

In diesem Artikel geht es darum, Arrays, einen speziellen Tabellentyp, zu verwenden, um einen sprechenden Charakter zu erstellen.

Tabellen

Tabellen sind Datentypen, die mehrere Werte enthalten 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 aufnehmen. Mit Tabellen können Sie Gegenstände im Inventar eines Spielers speichern oder eine Liste von Tausenden von Spielernamen erstellen.

Arrays

Es gibt verschiedene Typen von Tabellen. Ein Typ 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:

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

Erstellen Sie einen sprechenden Charakter

Um Arrays zu erkunden, arbeiten Sie mit einem Nicht-Spieler-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-Detector enthält, aber keinen Dialog.

  1. Laden Sie die Vorlagen-NPC herunter.

  2. Importieren Sie im Explorer das NPC, indem Sie mit der rechten Maustaste auf WorkspaceAus Datei einfügen 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 in ChatManager, wo im Skript markiert, ein leeres Array, um Dialogoptionen zu speichern.


    -- Zyklisch durch den Chatdialog, wenn das 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 Dialogstrings ein, die durch Kommas getrennt sind.


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

Verwenden Sie Array-Indizes

Jeder Wert im Array wird mit 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 Indizes bei 0.

Im gerade erstellten Array hat "Hallo!" den Index 1 und "Auf Wiedersehen!" den Index 3.

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

Verwenden Sie spezifische Indexwerte

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

  1. Ersetzen Sie den Standard-Stringwert der Variablen dialogue 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 das NPC. Der zweite Arraywert sollte in der Sprechblase erscheinen. Versuchen Sie, den Code zu ändern, um jeden Wert im Array auszutesten.

Ändern Sie die Dialogzeilen

Wenn der Spieler mit dem NPC interagiert, sagt der NPC immer dieselbe Zeile. Das ist langweilig. Stattdessen verwenden Sie eine Variable, um festzulegen, welcher Indexwert verwendet werden soll.

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

  1. Fügen Sie zur Verfolgung des aktuellen Indexes 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. In speak() ersetzen Sie die Indexnummer in dialogueArray[2] durch die von Ihnen gerade erstellte Variable.


    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 das NPC, um jede Dialogzeichenfolge aus dem Array zu sehen.

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

Sie werden dies im nächsten Abschnitt beheben, sodass der Dialog nach der Anzeige der letzten Zeichenfolge 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 sollten. Finden Sie die Größe eines Arrays, indem Sie #, ohne Leerzeichen, vor den Namen des Arrays schreiben.

Beispiel: #dialogueArray

Überprüfen Sie die Größe des Arrays mit dem aktuellen Wert der Variablen, um zu wissen, wann es Zeit ist, 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 dennoch 1 zu dialogueIndex hinzugefügt werden. 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 den Dialog durchlaufen und neu starten können.

Zusammenfassung

Datenstrukturen sind, wie Datensätze gespeichert werden. Luau verwendet Tabellen zur Erstellung von Datenstrukturen. Arrays sind eine Art von Tabelle, die geordnete Listen von Informationen speichern kann. Jeder Wert im Array erhält eine Indexnummer, beginnend mit Index 1.

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

Abgeschlossenes Skript

-- Zyklisch durch den Chatdialog, wenn das 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)

Fehlerbehebungstipps

Wenn der Charakter nicht durch das Array von Dialogen wechselt, versuchen Sie die folgenden Fehlerbehebungstipps.

  • Ü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 es keine Leerzeichen nach dem # in #dialogueArray gibt, wenn Sie die Größe des Arrays abrufen.

Optionale Herausforderungen

Versuchen Sie eine der folgenden optionalen Herausforderungen.

  • Programmieren Sie das Skript so, dass der Dialog des NPC rückwärts durch das Array geht. Der Dialogindex sollte beim Array-Längen beginnen und jedes Mal subtrahiert werden, anstatt addiert zu werden.
  • Lassen Sie anstelle der Anzeige von Dialogen in der Reihenfolge den NPC jedes Mal eine zufällige Dialogzeile anzeigen, indem Sie Random.new() verwenden. Ein Beispielskript ist unten enthalten, um sich darauf zu beziehen.

local randomGenerator = Random.new()
-- Zeigt einen neuen Dialog, wann immer das 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.