Introducción a los arrays

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Las estructuras de datos son cómo los programadores almacenan y organizan conjuntos completos de datos. En Luau, las estructuras de datos se crean con tablas. Las tablas pueden contener cualquier número de valores.

Este artículo cubre el uso de arrays, un tipo específico de tabla, para crear un personaje que hable.

Tablas

Las tablas son tipos de datos que pueden contener múltiples valores. A diferencia de otros tipos de datos que almacenan un solo valor, las tablas no tienen un tamaño fijo y pueden contener una mezcla de diferentes tipos de valores. Con las tablas, puedes almacenar elementos en el inventario de un jugador o crear una lista de miles de nombres de jugadores.

Arrays

Hay diferentes tipos de tablas. Un tipo es un array, que almacena listas de valores en un orden específico. Para crear un array, crea una variable y asígnale llaves { }. Separa los valores dentro de las llaves con comas, como se muestra a continuación:

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

Crea un personaje que hable

Para explorar los arrays, trabajarás con un personaje no jugable (NPC) que, al hacer clic, muestra una línea diferente de diálogo.

Este proyecto utilizará un modelo de NPC prehecho, que incluye un script parcial y un Detector de Prompts, pero carece de diálogo.

  1. Descarga la plantilla de NPC.

  2. En el Explorador, importa el NPC haciendo clic derecho en WorkspaceInsertar desde archivo y selecciona el archivo descargado.

Estos pasos utilizan un array para almacenar diferentes frases que el NPC dirá cuando los jugadores interactúen con él.

  1. En el Explorador, ve a NPCProximityPromptChatManager.

  2. En ChatManager, donde se indica en el script, crea un array vacío para almacenar las opciones de diálogo.


    -- Cicla a través del diálogo de chat cuando se utiliza el prompt
    local Chat = game:GetService("Chat")
    local prompt = script.Parent
    local npc = prompt.Parent
    local characterParts = npc.CharacterParts
    local head = characterParts.Head
    -- Añadir array aquí
    local dialogueArray = {}
    local function speak()
    local dialogue = "¡Solo tengo una cosa que decir!"
    Chat:Chat(head, dialogue)
    end
    prompt.Triggered:Connect(speak)
  3. Dentro de las llaves {} del array recién creado, escribe al menos tres cadenas de diálogo, separadas por comas.


    local dialogueArray = {"¡Hola!", "¿Te conozco?", "¡Adiós!"}

Usa índices de array

Cada valor en el array se asigna a un número de índice. Los índices se asignan a los valores en el orden en que se almacenan. El primer valor está en el índice 1, el segundo en el índice 2, y así sucesivamente.

Algunos lenguajes de programación, como Java, comienzan los índices en 0.

En el array recién creado, "¡Hola!" está en el índice 1, y "¡Adiós!" está en el índice 3.

ÍndiceValor
1¡Hola!
2¡Hoy es un gran día!
3¡Adiós!

Usa valores de índice específicos

Usa valores de índice para asignar piezas específicas de diálogo al NPC. Para usar un valor en un índice específico, añade el índice entre corchetes directamente después del nombre del array, como dialogueArray[1].

  1. Reemplaza el valor de cadena predeterminado de la variable dialogue con el índice 2.


    local dialogueArray = {"¡Hola!", "¿Te conozco?", "¡Adiós!"}
    local function speak()
    local dialogue = dialogueArray[2]
    Chat:Chat(head, dialogue)
    end
  2. Realiza una prueba de juego y haz clic en el NPC. El segundo valor del array debería aparecer en el globo de chat. Intenta cambiar el código para probar cada valor en la tabla.

Cuando el jugador interactúa con el NPC, el NPC dirá siempre la misma línea. Eso es aburrido. En lugar de eso, usa una variable para actualizar qué valor de índice usar.

Cada vez que un jugador interactúe con el NPC, incrementa el valor de la variable en 1 para mostrar la siguiente línea de diálogo.

  1. Para llevar la cuenta del índice actual, añade una nueva variable llamada dialogueIndex. Establece la variable en 1 para comenzar al inicio del array.


    local dialogueArray = {"¡Hola!", "¿Te conozco?", "¡Adiós!"}
    local dialogueIndex = 1
  2. En speak(), reemplaza el número de índice en dialogueArray[2] con la variable que acabas de crear.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    end
  3. Al final de la función, añade 1 a dialogueIndex. La próxima vez que se llame a speak(), el diálogo mostrará la siguiente cadena.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex += 1
    end
  4. Realiza una prueba de juego y haz clic en el NPC para ver cada cadena de diálogo del array.

Observa que hay un error en la ventana de Salida una vez que el script llega al final del array.

Arreglarás esto en la siguiente sección para que el diálogo se reinicie desde el principio después de mostrar la última cadena.

Tamaño de los arrays

Puedes usar el tamaño del array para saber cuándo restablecer el índice deseado a 1. Encuentra el tamaño de un array escribiendo #, sin espacios, antes del nombre de un array.

Por ejemplo: #dialogueArray

Comprueba el tamaño del array con el valor actual de la variable para saber cuándo es el momento de comenzar de nuevo.

Usa el tamaño del array para comprobar cuándo es el momento de regresar a la primera pieza de diálogo.

  1. Añade una declaración if y verifica si dialogueIndex es igual a #dialogueArray, el tamaño total de este array. Si es así, establece dialogueIndex en 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 no está al final, aún debería añadir 1 a dialogueIndex. Mueve dialogueIndex += 1 bajo una declaración else.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex = if dialogueIndex == #dialogueArray then 1 else dialogueIndex + 1
    end
  3. Juega y confirma que puedes ciclar y reiniciar el diálogo.

Resumen

Las estructuras de datos son cómo se almacenan los conjuntos de datos. Luau utiliza tablas para crear estructuras de datos. Los arrays son un tipo de tabla que puede contener listas ordenadas de información. Cada valor dentro del array se asigna a un número de índice, comenzando con el índice 1.

Este script utilizó un array para crear una lista de posibles líneas de diálogo para un Personaje No Jugable (NPC).

Script completado

-- Cicla a través del diálogo de chat cuando se utiliza el prompt
local Chat = game:GetService("Chat")
local prompt = script.Parent
local npc = prompt.Parent
local characterParts = npc.CharacterParts
local head = characterParts.Head
-- Añadir array aquí
local dialogueArray = {"¡Hola!", "¿Te conozco?", "¡Adiós!"}
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)

Consejos de solución de problemas

Si el personaje no pasa por el array de diálogo, prueba los siguientes consejos de solución de problemas.

  • Verifica la declaración if que establece dialogueIndex de nuevo a 1. En la declaración else, verifica que dialogueIndex tiene 1 añadido a sí mismo.
  • Al obtener el tamaño del array, asegúrate de que no haya espacios después del # en #dialogueArray.

Desafíos opcionales

Prueba uno de los desafíos opcionales a continuación.

  • Codifica el script para que el diálogo del NPC retroceda a través del array. El índice de diálogo debería comenzar en la longitud del array y restar cada vez en lugar de sumar.
  • En lugar de mostrar el diálogo en orden, haz que el NPC muestre una línea de diálogo aleatoria cada vez que se haga clic usando Random.new(). Se incluye un script de muestra a continuación para referencia

local randomGenerator = Random.new()
-- Muestra un nuevo diálogo cada vez que se hace clic en el NPC
local function speak()
local randomIndex = randomGenerator:NextInteger(1, #dialogueArray)
local dialogue = dialogueArray[randomIndex]
Chat:Chat(head, dialogue)
end
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.