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

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

Tabellen

Tabellen sind Datenformate, die mehrere Werte enthalten können.Im Gegensatz zu anderen Datenarten, die einen einzigen Wert speichern, haben Tabellen keine feste Größe und können eine Mischung verschiedener Werttypen enthalten.Mit Tabellen kannst du Gegenstände im Inventar eines Spieler:inspeichern 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, erstelle eine Variable und weise ihr kurze Klammern zu { }.Trenne Werte innerhalb der Klammern mit Kommas wie unten:

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

Erstelle einen sprechenden Charakter

Um Arrays zu erkunden, arbeitest du mit einem nicht spielbaren Charakter (NPC), der, wenn du darauf klickst, eine andere Dialogzeile anzeigt.

Dieses Projekt wird ein vorab erstelltes NPC-Modell verwenden, das ein partielles Skript und einen Prompt-Detektor enthält, aber keinen Dialog.

  1. Laden Sie die Vorlage NPC herunter.

  2. Importiere im Explorer den NPC, indem du mit der rechten Maustaste auf Arbeitsplatz > Aus Datei einfügen klickst und die heruntergeladene Datei wählst.

Code ein Array

Diese Schritte verwenden ein Array, um verschiedene Phrasen für den NPC zu speichern, die er sagt, wenn Spieler mit ihm interagieren.

  1. Im Explorer , gehe zu NPC > ProximityPrompt > ChatManager.

  2. Im ChatManager, wo im Skript, das. PL: die Skriptsmarkiert wurde, erstelle ein leeres Array , um Dialogoptionen zu speichern.


    -- Zyklen durch Chat-Dialog, wenn 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üge hier ein Array hinzu
    local dialogueArray = {}
    local function speak()
    local dialogue = "I've got one thing to say!"
    Chat:Chat(head, dialogue)
    end
    prompt.Triggered:Connect(speak)
  3. Innerhalb der Klammern {} des gerade erstellten Arrays gib mindestens drei Dialogstränge ein, getrennt durch Kommas.


    local dialogueArray = {"Hi!", "Do I know you?", "Goodbye!"}

Verwende Array-Indizes

Jeder Wert in dem Array wird einer index.Verzeichnisse werden zu Werten in der Reihenfolge zugewiesen, in der die Werte gespeichert sind.Der erste Wert ist bei Index 1, der zweite bei Index 2 und so weiter.

Einige Programmiersprachen, wie Java, starten Indizes bei 0.

Im gerade erstellten Array ist "Hi" bei Index 1 und "Goodbye!" bei Index 3.

IndexWert
1Hi
2Heute ist ein großartiger Tag!
3Tschüss!

Verwende spezifische Indexwerte

Verwende Indexwerte, um bestimmte Dialogteile dem NPC zuzuweisen.Um einen Wert an einem bestimmten Index zu verwenden, füge den Index in Klammern direkt nach dem Namen des Arrays hinzu, wie dialogueArray[1] .

  1. Ersetze den Standardtextwert der dialogue Variablen durch Index 2.


    local dialogueArray = {"Hi!", "Do I know you?", "Goodbye!"}
    local function speak()
    local dialogue = dialogueArray[2]
    Chat:Chat(head, dialogue)
    end
  2. Teste den NPC und klicke darauf. Der zweite Array-Wert sollte in der Chat-Blase erscheinen. Ändere den Code, um jeden Wert in der Tabelle zu testen.

Dialoglinien ändern

Wenn der Spieler mit dem Nicht-Spieler-Charakterinteragiert, wird der NPC immer die gleiche Zeile sagen.Das ist langweilig.Verwende stattdessen eine Variable, um zu aktualisieren, welcher Indexwert verwendet werden soll.

Immer wenn ein Spieler mit dem NPC interagiert, erhöhe den Variablenwert um 1, um die folgende Dialogzeile anzuzeigen.

  1. Um den aktuellen Index zu verfolgen, füge eine neue Variable mit dem Namen dialogueIndex hinzu. Stelle die Variable auf 1 ein, um am Beginn des Arrays zu beginnen.


    local dialogueArray = {"Hi!", "Do I know you?", "Goodbye!"}
    local dialogueIndex = 1
  2. In speak() , ersetze die Indexnummer in dialogueArray[2] durch die Variable, die du gerade erstellt hast.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    end
  3. Am unteren Rand der Funktion füge 1 zu dialogueIndex hinzu. Das nächste Mal, wenn speak() aufgerufen wird, wird der Dialog die nächste Stringanzeigen.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex += 1
    end
  4. Teste deinen NPC und klicke auf ihn, um jede Dialogzeile aus dem Array zu sehen.

Beachten Sie, dass es einen Fehler im Ausgabe-Fenster gibt, sobald das Skript das Ende des Arrays erreicht.

Du wirst das in dem nächsten Abschnitt reparieren, so dass der Dialog von Anfang an neu gestartet wird, nachdem er die letzte Stringangezeigt hat.

Array-Größen

Du kannst die Größe des Arrays verwenden, um zu wissen, wann du den gewünschten Index auf 1 zurücksetzen musst.Finde die Größe eines Arrays, indem du # ohne Leerstellen vor dem Namen eines Arrays eingibst.

Zum Beispiel: #dialogueArray

Überprüfe die Größe des Arrays gegen den aktuellen Wert der Variable, um zu wissen, wann es Zeit ist, wieder am Anfang zu beginnen.

Starte den Dialog neu

Verwende die Größe des Arrays, um zu überprüfen, wann es Zeit ist, zum ersten Dialogstück zurückzukehren.

  1. Fügen Sie ein if-Statement hinzu und überprüfen Sie, ob dialogueIndex equal #dialogueArray , die Gesamtgröße dieses Arrays. Wenn ja, dann 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 beendenist, sollte es immer noch 1 zu dialogueIndex hinzufügen. Verschiebe 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. Spiele und bestätige, dass du durch den Dialog navigieren und ihn neu starten kannst.

Übersicht

Datenstrukturen sind, wie Sätze von Daten gespeichert werden.Luau verwendet Tabellen, um Datenstrukturen zu erstellen.Arrays sind eine Art Tabelle, die sortierte Listen von Informationen enthalten kann.Jeder Wert innerhalb des Arrays erhält eine Indexnummer, beginnend mit Index 1.

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

Abgeschlossenes Skript, das. PL: die Skripts

-- Zyklen durch Chat-Dialog, wenn 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üge hier ein Array hinzu
local dialogueArray = {"Hi!", "Do I know you?", "Goodbye!"}
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)

Problemlösungstipps

Wenn der Charakter nicht durch das Array des Dialogs geht, versuchen Sie die folgenden Lösungstipps.

  • Überprüfe die if-Anweisung, dass dialogueIndex auf 1 zurückgesetzt wird. In der else-Anweisung überprüfe, dass dialogueIndex 1 zu sich hinzugefügt wurde.
  • Wenn du die Größe des Arrays erhältst, stelle sicher, dass es keine Leerstellen nach dem # in #dialogueArray gibt.

Optionale Herausforderungen

Versuche eine der optionalen Herausforderungen unten.

  • Code das Skript, damit der Dialog des NPCs rückwärts durch die Liste geht.Der Dialogindex sollte am Array beginnen und jedes Mal abziehen, anstatt hinzuzufügen.
  • Anstatt Dialoge in der Reihenfolge anzuzeigen, lassen Sie den NPC jedes Mal eine zufällige Zeile des Dialogs anzeigen, indem Sie Random.new() verwenden.Ein Beispielskript ist unten als 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