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 comment les programmeurs stockent et organisent des ensembles entiers de données. Dans Luau, les structures de données sont créées avec des tables. Les tables peuvent contenir un nombre quelconque de valeurs.

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

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 qui parle

Pour explorer les tableaux, vous travaillerez avec un personnage non jouable (PNJ) qui, lorsqu'on clique dessus, montre une ligne de dialogue différente.

Ce projet utilisera un modèle de PNJ préfabriqué, qui comprend un script partiel et un détecteur de prompt mais qui n'a pas de dialogue.

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

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

Codage d'un tableau de dialogues

Ces étapes utilisent un tableau pour stocker différentes phrases que le PNJ dira lorsque les joueurs interagiront avec lui.

  1. Dans l'Explorateur, allez à PNJProximityPromptChatManager.

  2. Dans ChatManager, à l'endroit indiqué dans le script, créez un tableau vide pour stocker les options de dialogue.


    -- Parcourt les dialogues 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
    -- Ajoutez un tableau ici
    local dialogueArray = {}
    local function speak()
    local dialogue = "J'ai une chose à dire !"
    Chat:Chat(head, dialogue)
    end
    prompt.Triggered:Connect(speak)
  3. Dans les 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 !", "Est-ce que je te connais ?", "Au revoir !"}

Utiliser les indices de tableau

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

Certaines langues de codage, comme Java, commencent les indices à 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 assigner des morceaux spécifiques de dialogue au PNJ. 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 par défaut de chaîne de la variable dialogue par l'index 2.


    local dialogueArray = {"Salut !", "Est-ce que je te connais ?", "Au revoir !"}
    local function speak()
    local dialogue = dialogueArray[2]
    Chat:Chat(head, dialogue)
    end
  2. Jouez le test et cliquez sur le PNJ. 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 PNJ, celui-ci dira toujours la même ligne. C'est ennuyeux. Au lieu de cela, utilisez une variable pour mettre à jour quel indice utiliser.

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

  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 !", "Est-ce que 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. Au 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. Jouez le test et cliquez sur le PNJ 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 des tableaux

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 quand même 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. Essayez et confirmez que vous pouvez parcourir et redémarrer le dialogue.

Résumé

Les structures de données sont comment 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 (PNJ).

Script complet

-- Parcourt les dialogues 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
-- Ajoutez un tableau ici
local dialogueArray = {"Salut !", "Est-ce que 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 passe pas par le tableau de dialogue, essayez les conseils de dépannage suivants.

  • Vérifiez l'instruction if qui remet dialogueIndex à 1. Dans l'instruction else, vérifiez que dialogueIndex a 1 ajouté à lui-même.
  • Lors de la récupération de 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 pour que le dialogue du PNJ aille en arrière dans 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 PNJ montre 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 PNJ 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.