Introduction aux tableaux

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Les structures de données sont la façon dont les programmeurs stockent et organisent des ensembles de données entiers. Dans Luau, les structures de données sont créées avec des tables. Les tables peuvent contenir n'importe quel nombre de valeurs.

Cet article traite de l'utilisation des tableaux, un type de table spécifique, pour créer un personnage parlant.

Tables

Les tables sont des types de données qui peuvent contenir plusieurs valeurs. Contrairement à d'autres types de données qui stockent une seule valeur, les tables n'ont pas de taille fixe et peuvent contenir un mélange de différents types de valeurs. Avec les tables, vous pouvez stocker des objets dans l'inventaire d'un joueur ou créer une liste de milliers de noms de joueurs.

Tableaux

Il existe différents types de tables. Un type est un tableau, qui stocke des listes de valeurs dans un ordre spécifique. Pour créer un tableau, créez une variable et assignez-lui des accolades { }. Séparez les valeurs à l'intérieur des accolades par des virgules comme ci-dessous :

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

Créer un personnage parlant

Pour explorer les tableaux, vous allez travailler avec un personnage non jouable (NPC) qui, lorsqu'il est cliqué, affiche une ligne de dialogue différente.

Ce projet utilisera un modèle de NPC préfabriqué, qui comprend un script partiel et un détecteur de prompt, mais qui manque de dialogue.

  1. Téléchargez le modèle de NPC.

  2. Dans l'Explorateur, importez le NPC en cliquant avec le bouton droit sur WorkspaceInsérer à partir du fichier et sélectionnez le fichier téléchargé.

Coder un tableau de dialogue

Ces étapes utilisent un tableau pour stocker différentes phrases que le NPC doit dire lorsque les joueurs interagissent avec lui.

  1. Dans l'Explorateur, allez à NPCProximityPromptChatManager.

  2. Dans ChatManager, là où c'est marqué dans le script, créez un tableau vide pour stocker les options de dialogue.

    -- Parcourt le dialogue de chat lorsque le prompt est utilisé
    local Chat = game:GetService("Chat")
    local prompt = script.Parent
    local npc = prompt.Parent
    local characterParts = npc.CharacterParts
    local head = characterParts.Head
    -- Ajouter le tableau ici
    local dialogueArray = {}
    local function speak()
    local dialogue = "J'ai une chose à dire !"
    Chat:Chat(head, dialogue)
    end
    prompt.Triggered:Connect(speak)
  3. À l'intérieur des accolades {} du tableau que vous venez de créer, tapez au moins trois chaînes de dialogue, séparées par des virgules.

    local dialogueArray = {"Salut !", "Je te connais ?", "Au revoir !"}

Utiliser des index de tableau

Chaque valeur dans le tableau se voit attribuer un numéro d'index. Les index sont attribués aux valeurs dans l'ordre dans lequel les valeurs sont stockées. La première valeur est à l'index 1, la deuxième à l'index 2, et ainsi de suite.

Certaines langages de programmation, comme Java, commencent les index à 0.

Dans le tableau que vous venez de créer, "Salut" est à l'index 1, et "Au revoir !" est à l'index 3.

IndexValeur
1Salut
2Aujourd'hui est une belle journée !
3Au revoir !

Utiliser des valeurs d'index spécifiques

Utilisez des valeurs d'index pour attribuer des morceaux spécifiques de dialogue au NPC. Pour utiliser une valeur à un index spécifique, ajoutez l'index entre crochets directement après le nom du tableau, comme dialogueArray[1].

  1. Remplacez la valeur de chaîne par défaut de la variable dialogue par l'index 2.

    local dialogueArray = {"Salut !", "Je te connais ?", "Au revoir !"}
    local function speak()
    local dialogue = dialogueArray[2]
    Chat:Chat(head, dialogue)
    end
  2. Testez le jeu et cliquez sur le NPC. La deuxième valeur du tableau devrait apparaître dans la bulle de chat. Essayez de modifier le code pour tester chaque valeur dans le tableau.

Changer les lignes de dialogue

Lorsque le joueur interagit avec le NPC, le NPC dira toujours la même ligne. C'est ennuyeux. Au lieu de cela, utilisez une variable pour mettre à jour quelle valeur d'index utiliser.

Chaque fois qu'un joueur interagit avec le NPC, incrémentez la valeur de la variable de 1 pour afficher la ligne de dialogue suivante.

  1. Pour garder une trace de l'index actuel, ajoutez une nouvelle variable nommée dialogueIndex. Définissez la variable à 1 pour commencer au début du tableau.

    local dialogueArray = {"Salut !", "Je te connais ?", "Au revoir !"}
    local dialogueIndex = 1
  2. Dans speak(), remplacez le numéro d'index dans dialogueArray[2] par la variable que vous venez de créer.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    end
  3. En bas de la fonction, ajoutez 1 à dialogueIndex. La prochaine fois que speak() est appelé, le dialogue affichera la prochaine chaîne.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex += 1
    end
  4. Testez le jeu et cliquez sur le NPC pour voir chaque chaîne de dialogue du tableau.

Remarquez qu'il y a une erreur dans la fenêtre de sortie une fois que le script atteint la fin du tableau.

Vous corrigerez cela dans la section suivante afin que le dialogue redémarre depuis le début après avoir affiché la dernière chaîne.

Tailles de tableau

Vous pouvez utiliser la taille du tableau pour savoir quand réinitialiser l'index désiré à 1. Trouvez la taille d'un tableau en tapant #, sans espaces, avant le nom d'un tableau.

Par exemple : #dialogueArray

Vérifiez la taille du tableau par rapport à la valeur actuelle de la variable pour savoir quand il est temps de recommencer depuis le début.

Redémarrer le dialogue

Utilisez la taille du tableau pour vérifier quand il est temps de revenir au premier morceau de dialogue.

  1. Ajoutez une instruction if et vérifiez si dialogueIndex est égal à #dialogueArray, la taille totale de ce tableau. Si c'est le cas, alors définissez dialogueIndex à 1.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    if dialogueIndex == #dialogueArray then
    dialogueIndex = 1
    end
    dialogueIndex += 1
    end
  2. Si dialogueIndex n'est pas à la fin, il devrait toujours ajouter 1 à dialogueIndex. Déplacez dialogueIndex += 1 sous une instruction else.

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex = if dialogueIndex == #dialogueArray then 1 else dialogueIndex + 1
    end
  3. Jouez et confirmez que vous pouvez parcourir et redémarrer le dialogue.

Résumé

Les structures de données sont la façon dont des ensembles de données sont stockés. Luau utilise des tables pour créer des structures de données. Les tableaux sont un type de table qui peut contenir des listes ordonnées d'informations. Chaque valeur dans le tableau se voit attribuer un numéro d'index, en commençant par l'index 1.

Ce script a utilisé un tableau pour créer une liste de lignes de dialogue possibles pour un personnage non jouable (NPC).

Script terminé
-- Parcourt le dialogue de chat lorsque le prompt est utilisé
local Chat = game:GetService("Chat")
local prompt = script.Parent
local npc = prompt.Parent
local characterParts = npc.CharacterParts
local head = characterParts.Head
-- Ajouter le tableau ici
local dialogueArray = {"Salut !", "Je te connais ?", "Au revoir !"}
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)

Conseils de dépannage

Si le personnage ne parcourt pas le tableau de dialogue, essayez les conseils de dépannage suivants.

  • Vérifiez l'instruction if que dialogueIndex est réinitialisé à 1. Dans l'instruction else, vérifiez que dialogueIndex a 1 ajouté à lui-même.
  • Lorsque vous obtenez la taille du tableau, assurez-vous qu'il n'y a pas d'espaces après le # dans #dialogueArray.

Défis optionnels

Essayez l'un des défis optionnels ci-dessous.

  • Codez le script de sorte que le dialogue du NPC passe en arrière à travers le tableau. L'index de dialogue devrait commencer à la longueur du tableau et soustraire à chaque fois au lieu d'ajouter.
  • Au lieu d'afficher le dialogue dans l'ordre, faites en sorte que le NPC affiche une ligne de dialogue aléatoire à chaque fois en utilisant Random.new(). Un script d'exemple est inclus ci-dessous pour référence.
local randomGenerator = Random.new()
-- Affiche un nouveau dialogue chaque fois que le NPC est cliqué
local function speak()
local randomIndex = randomGenerator:NextInteger(1, #dialogueArray)
local dialogue = dialogueArray[randomIndex]
Chat:Chat(head, dialogue)
end
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.