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 insiemi di dati. In Luau, le strutture dati vengono create con le tabelle. Le tabelle possono contenere qualsiasi numero 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 valori. Con le tabelle, puoi memorizzare oggetti nell'inventario di un giocatore o creare un elenco di migliaia di nomi di giocatori.

Array

Ci sono 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 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 viene cliccato, mostra una diversa linea di dialogo.

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

  1. Scarica il modello NPC.

  2. In Explorer, importa l’NPC facendo clic con il pulsante destro del mouse su WorkspaceInserisci da file e seleziona il file scaricato.

Questi passaggi utilizzano un array per memorizzare diverse frasi per l'NPC da dire quando i giocatori interagiscono con esso.

  1. In Explorer, vai su NPCProximityPromptChatManager.

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


    -- Cicla attraverso il dialogo delle chat 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 degli array

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

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

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

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

Usa valori di indice specifici

Utilizza i valori di indice per assegnare specifici pezzi 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 playtest e clicca l’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 dell'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 attuale, 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 speak() viene chiamato, il dialogo mostrerà la stringa successiva.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex += 1
    end
  4. Fai un playtest e clicca l’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.

Risolverai questo problema nella sezione successiva in modo che il dialogo ricominci dall'inizio dopo aver mostrato l'ultima stringa.

Dimensioni degli 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 attuale della variabile per sapere quando è il momento di ripartire dall'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ì, allora imposta dialogueIndex a 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 di poter scorrere e riavviare il dialogo.

Le strutture dati sono il modo in cui gli insiemi di dati sono memorizzati. Luau utilizza le 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 delle chat 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 imposta dialogueIndex su 1. Nell'istruzione else, verifica 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 scorra all'indietro nell'array. L'indice del 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 casuale di dialogo ogni volta utilizzando Random.new(). Uno script di esempio è incluso di seguito per 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.