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

*เนื้อหานี้แปลโดยใช้ 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 ที่ทำเครื่องหมายในสคริปต์ให้สร้าง อาเรย์ว่าง เพื่อจัดเก็บตัวเลือกบทสนทนา


    -- หมุนเวียนบทสนทนาเมื่อการแจ้งเตือนถูกใช้
    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 และตรวจสอบว่า 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


    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)

สคริปต์ที่เสร็จสมบูรณ์

-- หมุนเวียนบทสนทนาเมื่อการแจ้งเตือนถูกใช้
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 ที่กำหนดให้ dialogueIndex กลับไปที่ 1 ในคำสั่ง else ตรวจสอบว่า 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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ