Introducción a los arreglos

*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 la forma en que 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 arreglos, un tipo específico de tabla, para crear un personaje que habla.

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.

Arreglos

Hay diferentes tipos de tablas. Un tipo es un arreglo, que almacena listas de valores en un orden específico. Para crear un arreglo, 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}

Crear un personaje que habla

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

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 arreglo 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 arreglo vacío para almacenar las opciones de diálogo.

    -- Ciclos a través del diálogo de chat cuando se usa el prompt
    local Chat = game:GetService("Chat")
    local prompt = script.Parent
    local npc = prompt.Parent
    local characterParts = npc.CharacterParts
    local head = characterParts.Head
    -- Agrega el arreglo aquí
    local dialogueArray = {}
    local function speak()
    local dialogue = "¡Tengo una cosa que decir!"
    Chat:Chat(head, dialogue)
    end
    prompt.Triggered:Connect(speak)
  3. Dentro de las llaves {} del arreglo que acabas de crear, escribe al menos tres cadenas de diálogo, separadas por comas.

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

Usar índices de arreglo

Cada valor en el arreglo se asigna 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 arreglo que acabas de crear, "¡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!

Usar 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, agrega el índice entre corchetes directamente después del nombre del arreglo, 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. Prueba el juego y haz clic en el NPC. El segundo valor del arreglo 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 siempre dirá la misma línea. Eso es aburrido. En su lugar, usa una variable para actualizar qué valor de índice usar.

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

  1. Para hacer un seguimiento del índice actual, agrega una nueva variable llamada dialogueIndex. Establece la variable en 1 para comenzar al principio del arreglo.

    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, suma 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. Prueba el juego y haz clic en el NPC para ver cada cadena de diálogo del arreglo.

Nota que hay un error en la ventana de salida una vez que el script alcanza el final del arreglo.

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ños de arreglo

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

Por ejemplo: #dialogueArray

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

Usa el tamaño del arreglo para verificar cuándo es el momento de volver a la primera pieza de diálogo.

  1. Agrega una declaración if y verifica si dialogueIndex es igual a #dialogueArray, el tamaño total de este arreglo. 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 sumar 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 la forma en que se almacenan los conjuntos de datos. Luau utiliza tablas para crear estructuras de datos. Los arreglos son un tipo de tabla que puede contener listas ordenadas de información. Cada valor dentro del arreglo se asigna un número de índice, comenzando con el índice 1.

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

Script completado
-- Ciclos a través del diálogo de chat cuando se usa el prompt
local Chat = game:GetService("Chat")
local prompt = script.Parent
local npc = prompt.Parent
local characterParts = npc.CharacterParts
local head = characterParts.Head
-- Agrega el arreglo 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 arreglo de diálogo, prueba los siguientes consejos de solución de problemas.

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

Desafíos opcionales

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

  • Codifica el script para que el diálogo del NPC retroceda a través del arreglo. El índice de diálogo debería comenzar en la longitud del arreglo 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 usando Random.new(). A continuación se incluye un script de muestra 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.