แนะนำเกี่ยวกับอาร์เรย์

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

โครงสร้างข้อมูล คือวิธีที่นักพัฒนาซอฟต์แวร์เก็บและจัดระเบียบชุดข้อมูลทั้งหมด ใน Luau โครงสร้างข้อมูลจะถูกสร้างขึ้นด้วยตาราง ตาราง สามารถเก็บค่าหมายเลขใดก็ได้

บทความนี้จะพูดถึงการใช้ อาร์เรย์ ซึ่งเป็นประเภทตารางเฉพาะ เพื่อสร้างตัวละครที่พูดคุยได้

ตาราง

ตาราง เป็นประเภทข้อมูลที่สามารถเก็บค่าหลายค่าได้ แตกต่างจากประเภทข้อมูลอื่น ๆ ที่เก็บค่าเดียว ตารางไม่มีขนาดที่แน่นอนและสามารถเก็บค่าประเภทต่าง ๆ ได้ ด้วยตาราง คุณสามารถเก็บรายการในคลังของผู้เล่นหรือสร้างรายชื่อผู้เล่นหลายพันคน

อาร์เรย์

มีตารางหลายประเภท หนึ่งในประเภทคือ อาร์เรย์ ซึ่งเก็บรายการของค่าในลำดับที่เฉพาะเจาะจง เพื่อสร้างอาร์เรย์ ให้สร้างตัวแปรและกำหนดให้มันเป็นวงเล็บปีกกา { } แยกค่าภายในวงเล็บด้วยเครื่องหมายจุลภาคดังนี้:

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

สร้างตัวละครที่พูดคุยได้

เพื่อสำรวจอาร์เรย์ คุณจะทำงานกับตัวละครที่ไม่สามารถเล่นได้ (NPC) ซึ่งเมื่อคลิกจะมีการแสดงบรรทัดบทสนทนาที่แตกต่างกัน

โครงการนี้จะใช้โมเดล NPC ที่สร้างไว้ล่วงหน้า ซึ่งรวมถึงสคริปต์บางส่วนและ Prompt Detector แต่ไม่มีบทสนทนา

  1. ดาวน์โหลดเทมเพลต NPC

  2. ใน Explorer ให้นำเข้า NPC โดยคลิกขวาที่ WorkspaceInsert From File และเลือกไฟล์ที่ดาวน์โหลดมา

เขียนอาร์เรย์บทสนทนา

ขั้นตอนเหล่านี้ใช้เพื่อเก็บวลีต่าง ๆ สำหรับ NPC ที่จะพูดเมื่อผู้เล่นมีปฏิสัมพันธ์กับมัน

  1. ใน Explorer ไปที่ NPCProximityPromptChatManager

  2. ใน ChatManager ที่ทำเครื่องหมายในสคริปต์ สร้าง อาร์เรย์ว่าง เพื่อเก็บตัวเลือกบทสนทนา

    -- หมุนเวียนผ่านบทสนทนาเมื่อมีการใช้ prompt
    local Chat = game:GetService("Chat")
    local prompt = script.Parent
    local npc = prompt.Parent
    local characterParts = npc.CharacterParts
    local head = characterParts.Head
    -- เพิ่มอาร์เรย์ที่นี่
    local dialogueArray = {}
    local function speak()
    local dialogue = "ฉันมีสิ่งหนึ่งที่จะพูด!"
    Chat:Chat(head, dialogue)
    end
    prompt.Triggered:Connect(speak)
  3. ภายในวงเล็บ {} ของอาร์เรย์ที่เพิ่งสร้างขึ้น ให้พิมพ์อย่างน้อยสามสตริงของบทสนทนา แยกด้วยเครื่องหมายจุลภาค

    local dialogueArray = {"สวัสดี!", "ฉันรู้จักคุณไหม?", "ลาก่อน!"}

ใช้ดัชนีอาร์เรย์

แต่ละค่าภายในอาร์เรย์จะถูกกำหนดหมายเลข ดัชนี ดัชนีจะถูกกำหนดให้กับค่าในลำดับที่ค่าถูกเก็บไว้ ค่าตัวแรกอยู่ที่ดัชนี 1 ค่าตัวที่สองอยู่ที่ดัชนี 2 และต่อไปเรื่อย ๆ

บางภาษาเขียนโปรแกรม เช่น Java เริ่มดัชนีที่ 0

ในอาร์เรย์ที่เพิ่งสร้างขึ้น "สวัสดี" อยู่ที่ดัชนี 1 และ "ลาก่อน!" อยู่ที่ดัชนี 3

ดัชนีค่า
1สวัสดี
2วันนี้เป็นวันที่ยอดเยี่ยม!
3ลาก่อน!

ใช้ค่าดัชนีเฉพาะ

ใช้ค่าดัชนีเพื่อกำหนดบทสนทนาที่เฉพาะเจาะจงให้กับ NPC เพื่อใช้ค่าที่ดัชนีเฉพาะ ให้เพิ่มดัชนีในวงเล็บโดยตรงหลังจากชื่ออาร์เรย์ เช่น dialogueArray[1]

  1. แทนที่ค่าดีฟอลต์ของตัวแปร dialogue ด้วยดัชนี 2

    local dialogueArray = {"สวัสดี!", "ฉันรู้จักคุณไหม?", "ลาก่อน!"}
    local function speak()
    local dialogue = dialogueArray[2]
    Chat:Chat(head, dialogue)
    end
  2. ทดสอบการเล่นและคลิกที่ NPC ค่าที่สองในอาร์เรย์ควรปรากฏในฟองสบู่แชท ลองเปลี่ยนโค้ดเพื่อทดสอบค่าทุกค่าในตาราง

เปลี่ยนบรรทัดบทสนทนา

เมื่อผู้เล่นมีปฏิสัมพันธ์กับ NPC NPC จะพูดบรรทัดเดียวกันเสมอ นั่นน่าเบื่อ แทนที่จะใช้ตัวแปรเพื่ออัปเดตค่าดัชนีที่จะใช้

เมื่อใดก็ตามที่ผู้เล่นมีปฏิสัมพันธ์กับ NPC ให้เพิ่มค่าตัวแปร 1 เพื่อแสดงบรรทัดบทสนทนาถัดไป

  1. เพื่อเก็บติดตามดัชนีปัจจุบัน ให้เพิ่มตัวแปรใหม่ชื่อ dialogueIndex ตั้งค่าตัวแปรเป็น 1 เพื่อเริ่มต้นที่จุดเริ่มต้นของอาร์เรย์

    local dialogueArray = {"สวัสดี!", "ฉันรู้จักคุณไหม?", "ลาก่อน!"}
    local dialogueIndex = 1
  2. ใน speak() แทนที่ หมายเลขดัชนีใน dialogueArray[2] ด้วยตัวแปรที่คุณเพิ่งสร้างขึ้น

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    end
  3. ที่ด้านล่างของฟังก์ชัน ให้เพิ่ม 1 ไปยัง dialogueIndex ครั้งถัดไปที่เรียก speak() บทสนทนาจะแสดงสตริงถัดไป

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex += 1
    end
  4. ทดสอบการเล่นและคลิกที่ NPC เพื่อดูแต่ละสตริงบทสนทนาจากอาร์เรย์

สังเกตว่ามี ข้อผิดพลาด ในหน้าต่าง Output เมื่อสคริปต์ถึงจุดสิ้นสุดของอาร์เรย์

คุณจะแก้ไขสิ่งนี้ในส่วนถัดไปเพื่อให้บทสนทนากลับมาเริ่มต้นจากจุดเริ่มต้นหลังจากแสดงสตริงสุดท้าย

ขนาดอาร์เรย์

คุณสามารถใช้ขนาดของอาร์เรย์เพื่อทราบว่าเมื่อใดควรรีเซ็ตดัชนีที่ต้องการเป็น 1 ค้นหาขนาดของอาร์เรย์โดยการพิมพ์ # โดยไม่มีช่องว่างก่อนชื่ออาร์เรย์

ตัวอย่างเช่น: #dialogueArray

ตรวจสอบขนาดของอาร์เรย์กับค่าปัจจุบันของตัวแปรเพื่อทราบว่าเมื่อใดถึงเวลาที่จะเริ่มต้นกลับที่จุดเริ่มต้น

เริ่มต้นบทสนทนาใหม่

ใช้ขนาดอาร์เรย์เพื่อตรวจสอบว่าเมื่อใดถึงเวลาที่จะหมุนกลับไปยังบทสนทนาชิ้นแรก

  1. เพิ่ม if statement และตรวจสอบว่า dialogueIndex เท่ากับ #dialogueArray ขนาดรวมของอาร์เรย์นี้ หากใช่ ให้ตั้งค่า dialogueIndex เป็น 1

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    if dialogueIndex == #dialogueArray then
    dialogueIndex = 1
    end
    dialogueIndex += 1
    end
  2. หาก dialogueIndex ไม่อยู่ที่จุดสิ้นสุด มันควรยังคงเพิ่ม 1 ไปยัง dialogueIndex ย้าย dialogueIndex += 1 ไปใต้ else statement

    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex = if dialogueIndex == #dialogueArray then 1 else dialogueIndex + 1
    end
  3. เล่นและยืนยันว่าคุณสามารถหมุนเวียนและเริ่มต้นบทสนทนาใหม่ได้

สรุป

โครงสร้างข้อมูลคือวิธีการเก็บชุดข้อมูล Luau ใช้ตารางในการสร้างโครงสร้างข้อมูล อาร์เรย์เป็นประเภทหนึ่งของตารางที่สามารถเก็บรายการข้อมูลที่มีลำดับ ค่าทุกค่าภายในอาร์เรย์จะถูกกำหนดหมายเลขดัชนี โดยเริ่มจากดัชนี 1

สคริปต์นี้ใช้เพื่อสร้างรายการบรรทัดบทสนทนาที่เป็นไปได้สำหรับตัวละครที่ไม่สามารถเล่นได้ (NPC)

สคริปต์ที่เสร็จสมบูรณ์
-- หมุนเวียนผ่านบทสนทนาเมื่อมีการใช้ prompt
local Chat = game:GetService("Chat")
local prompt = script.Parent
local npc = prompt.Parent
local characterParts = npc.CharacterParts
local head = characterParts.Head
-- เพิ่มอาร์เรย์ที่นี่
local dialogueArray = {"สวัสดี!", "ฉันรู้จักคุณไหม?", "ลาก่อน!"}
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)

เคล็ดลับการแก้ไขปัญหา

หากตัวละครไม่ผ่านอาร์เรย์ของบทสนทนา ให้ลองเคล็ดลับการแก้ไขปัญหาดังต่อไปนี้

  • ตรวจสอบ if statement ว่าตั้งค่า dialogueIndex กลับเป็น 1 หรือไม่ ใน else statement ให้ตรวจสอบว่า dialogueIndex มีการเพิ่ม 1 ให้กับตัวเองหรือไม่
  • เมื่อได้รับขนาดของอาร์เรย์ ให้แน่ใจว่าไม่มีช่องว่างหลัง # ใน #dialogueArray

ความท้าทายเพิ่มเติม

ลองทำความท้าทายเพิ่มเติมด้านล่างนี้

  • เขียนสคริปต์เพื่อให้บทสนทนาของ NPC หมุนย้อนกลับผ่านอาร์เรย์ ดัชนีบทสนทนาควรเริ่มที่ความยาวของอาร์เรย์และลบออกทุกครั้งแทนที่จะเพิ่ม
  • แทนที่จะแสดงบทสนทนาในลำดับ ให้ NPC แสดงบรรทัดบทสนทนาที่สุ่มทุกครั้งโดยใช้ Random.new() สคริปต์ตัวอย่างรวมอยู่ด้านล่างเพื่ออ้างอิง
local randomGenerator = Random.new()
-- แสดงบทสนทนาใหม่เมื่อ NPC ถูกคลิก
local function speak()
local randomIndex = randomGenerator:NextInteger(1, #dialogueArray)
local dialogue = dialogueArray[randomIndex]
Chat:Chat(head, dialogue)
end
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ