Introduzione agli array

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Le strutture dati sono il modo in cui i programmatori memorizzano e organizzano interi set di dati. In Luau, le strutture dati sono create con le tabelle. Le tabelle possono contenere un numero qualsiasi di valori.

Questo articolo tratta dell'uso degli array, un tipo specifico di tabella, per creare un personaggio parlante.

Tabelle

Le tabelle sono tipi di dati che possono contenere più valori. A differenza di altri tipi di dati che memorizzano un singolo valore, le tabelle non hanno una dimensione fissa e possono contenere un mix di diversi tipi di valore. Con le tabelle, puoi memorizzare oggetti nell'inventario di un giocatore o creare un elenco di migliaia di nomi di giocatori.

Array

Esistono diversi tipi di tabelle. Un tipo è un array, che memorizza elenchi di valori in un ordine specifico. Per creare un array, crea una variabile e assegnale parentesi graffe { }. Separa i valori all'interno delle parentesi con delle virgole come di seguito:

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

Crea un personaggio parlante

Per esplorare gli array, lavorerai con un personaggio non giocabile (NPC) che, quando cliccato, mostra una linea di dialogo diversa.

Questo progetto utilizzerà un modello NPC predefinito, che include uno script parziale e un Rilevatore di Prompt, ma manca di dialogo.

  1. Scarica il modello NPC.

  2. In Explorer, importa l'NPC facendo clic destro su WorkspaceInserisci da file e seleziona il file scaricato.

Questi passaggi utilizzano un array per memorizzare diverse frasi che l'NPC dirà quando i giocatori interagiscono con esso.

  1. Nell'Esplora, vai su NPCProximityPromptChatManager.

  2. In ChatManager, dove indicato nello script, crea un array vuoto per memorizzare le opzioni di dialogo.

    -- Cicla attraverso il dialogo quando il prompt viene utilizzato
    local Chat = game:GetService("Chat")
    local prompt = script.Parent
    local npc = prompt.Parent
    local characterParts = npc.CharacterParts
    local head = characterParts.Head
    -- Aggiungi l'array qui
    local dialogueArray = {}
    local function speak()
    local dialogue = "Ho una cosa da dire!"
    Chat:Chat(head, dialogue)
    end
    prompt.Triggered:Connect(speak)
  3. All'interno delle parentesi {} dell'array appena creato, digita almeno tre stringhe di dialogo, separate da virgole.

    local dialogueArray = {"Ciao!", "Ti conosco?", "Arrivederci!"}

Usa gli indici dell'array

Ogni valore nell'array è assegnato a un numero di indice. Gli indici sono assegnati ai valori nell'ordine in cui i valori sono memorizzati. Il primo valore è all'indice 1, il secondo all'indice 2 e così via.

Al alcuni linguaggi di programmazione, come Java, iniziano gli indici da 0.

Nell'array appena creato, "Ciao!" è all'indice 1, e "Arrivederci!" è all'indice 3.

IndiceValore
1Ciao!
2Oggi è una bella giornata!
3Arrivederci!

Usa valori di indice specifici

Usa i valori di indice per assegnare pezzi specifici di dialogo all'NPC. Per utilizzare un valore a un indice specifico, aggiungi l'indice tra parentesi direttamente dopo il nome dell'array, come dialogueArray[1].

  1. Sostituisci il valore di stringa predefinito della variabile dialogue con l'indice 2.

    local dialogueArray = {"Ciao!", "Ti conosco?", "Arrivederci!"}
    local function speak()
    local dialogue = dialogueArray[2]
    Chat:Chat(head, dialogue)
    end
  2. Fai un test di gioco e clicca sull'NPC. Il secondo valore dell'array dovrebbe apparire nella bolla di chat. Prova a modificare il codice per testare ciascun valore nella tabella.

Quando il giocatore interagisce con l'NPC, l'NPC dirà sempre la stessa linea. È noioso. Invece, usa una variabile per aggiornare quale valore di indice utilizzare.

Ogni volta che un giocatore interagisce con l'NPC, incrementa il valore della variabile di 1 per visualizzare la seguente linea di dialogo.

  1. Per tenere traccia dell'indice corrente, aggiungi una nuova variabile chiamata dialogueIndex. Imposta la variabile su 1 per iniziare dall'inizio dell'array.

    local dialogueArray = {"Ciao!", "Ti conosco?", "Arrivederci!"}
    local dialogueIndex = 1
  2. In speak(), sostituisci il numero di indice in dialogueArray[2] con la variabile che hai appena creato.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    end
  3. In fondo alla funzione, aggiungi 1 a dialogueIndex. La prossima volta che viene chiamato speak(), il dialogo visualizzerà la stringa successiva.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex += 1
    end
  4. Fai un test di gioco e clicca sull'NPC per vedere ciascuna stringa di dialogo dall'array.

Nota che c'è un errore nella finestra di Output una volta che lo script raggiunge la fine dell'array.

Lo risolverai nella sezione successiva in modo che il dialogo riparta dall'inizio dopo aver mostrato l'ultima stringa.

Dimensioni dell'array

Puoi utilizzare la dimensione dell'array per sapere quando ripristinare l'indice desiderato a 1. Trova la dimensione di un array digitando #, senza spazi, prima del nome di un array.

Ad esempio: #dialogueArray

Controlla la dimensione dell'array rispetto al valore corrente della variabile per sapere quando è il momento di tornare all'inizio.

Usa la dimensione dell'array per controllare quando è il momento di tornare al primo pezzo di dialogo.

  1. Aggiungi un'istruzione if e controlla se dialogueIndex è uguale a #dialogueArray, la dimensione totale di questo array. Se sì, imposta dialogueIndex su 1.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    if dialogueIndex == #dialogueArray then
    dialogueIndex = 1
    end
    dialogueIndex += 1
    end
  2. Se dialogueIndex non è alla fine, dovrebbe comunque aggiungere 1 a dialogueIndex. Sposta dialogueIndex += 1 sotto un'istruzione else.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex = if dialogueIndex == #dialogueArray then 1 else dialogueIndex + 1
    end
  3. Gioca e conferma che puoi ciclare e riavviare il dialogo.

Le strutture dati sono il modo in cui i set di dati vengono memorizzati. Luau utilizza tabelle per creare strutture dati. Gli array sono un tipo di tabella che può contenere elenchi ordinati di informazioni. Ogni valore all'interno dell'array è assegnato a un numero di indice, a partire dall'indice 1.

Questo script ha utilizzato un array per creare un elenco di possibili linee di dialogo per un Personaggio Non Giocabile (NPC).

Script completato
-- Cicla attraverso il dialogo quando il prompt viene utilizzato
local Chat = game:GetService("Chat")
local prompt = script.Parent
local npc = prompt.Parent
local characterParts = npc.CharacterParts
local head = characterParts.Head
-- Aggiungi l'array qui
local dialogueArray = {"Ciao!", "Ti conosco?", "Arrivederci!"}
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)

Suggerimenti per la risoluzione dei problemi

Se il personaggio non attraversa l'array di dialogo, prova i seguenti suggerimenti per la risoluzione dei problemi.

  • Controlla l'istruzione if che dialogueIndex viene ripristinato a 1. Nell'istruzione else, controlla che dialogueIndex abbia 1 aggiunto a se stesso.
  • Quando ottieni la dimensione dell'array, assicurati che non ci siano spazi dopo il # in #dialogueArray.

Sfide opzionali

Prova una delle sfide opzionali qui sotto.

  • Codifica lo script in modo che il dialogo dell'NPC vada all'indietro attraverso l'array. L'indice di dialogo dovrebbe iniziare dalla lunghezza dell'array e sottrarre ogni volta invece di aggiungere.
  • Invece di mostrare il dialogo in ordine, fai in modo che l'NPC mostri una linea di dialogo casuale ogni volta utilizzando Random.new(). Uno script di esempio è incluso qui sotto come riferimento
local randomGenerator = Random.new()
-- Mostra un nuovo dialogo ogni volta che l'NPC viene cliccato
local function speak()
local randomIndex = randomGenerator:NextInteger(1, #dialogueArray)
local dialogue = dialogueArray[randomIndex]
Chat:Chat(head, dialogue)
end
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.