เงื่อนไขหลาย

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

โครงสร้างการควบคุมสามารถมีมากกว่าหนึ่งเงื่อนไข เครื่องมือค้นหา else และ elseif สามารถสร้างสถานการณ์เพิ่มเติมสำหรับสิ่งที่ควรเกิดขึ้นภายใต้สถานการณ์ต่างๆ ได้ สถานะของระเบียบ

แสดงรูปแบบสำหรับ else และอื่น ๆ

if isGreen then
print("Go")
elseif isYellow then
print("Slow")
elseif isPedestrians then
print("Wait")
else
print("stop")
end

ในโครงการนี้ else และ elseif ใช้เพื่อเขียนรหัสเส้นทางปาระเบิดที่ผู้วิ่งได้รับรางวัลขึ้นอยู่กับเวลาที่พวกเขาจบลง

การเขียนสภาวะหลาย

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

คำถ้าทั้งหมด

if finishTime < 5 then
-- รับป้ายทอง
end
if finishTime >= 5 and <= 10 then
-- รับป้ายสีเงิน
end
if finishTime > 10 and <= 15 then
-- รับป้ายทองแดง
end

วิธีที่อ่านได้ง่ายและมีประสิทธิภาพในการเขียนโค้ดนี้คือการใช้ if สถานะเดียวและใช้คำสั่งของคำว่า elseif เพื่อให้เงื่อนไขทางเลือกให้กับการทดสอบหากเงื่อนไขก่อนหน้านี้ไม่เป็นจริง

ใช้ else และอื่น ๆ

if finishTime < 5 then
-- รับป้ายทอง
elseif finishTime >= 5 and <= 10 then
-- รับป้ายสีเงิน
elseif finishTime > 10 and <= 15 then
-- รับป้ายทองแดง
end

เมื่อถึง if/then ประกาศจะเริ่มต้นที่ด้านบนและเฉพาะเวลาเท่านั้นที่จะเริ่มต้นโค้ดสำหรับประกาศนี้ ครั้งแรก ที่มันพบ

การตั้งค่าสถานที่แข่งขัน

เริ่มโดยวางจุดเริ่มต้นของหลักสูตรและจุดสิ้นสุด, แล้วสร้างสคริปเพื่อจะเวลาผู้เล่นและรางวัลต่างๆ

  1. สร้างส่วนที่แนบมัดชื่อว่า FinishLine สร้างการทดสอบเร็วขึ้นโดยวางจุดเริ่มต้นและจุดสิ้นสุดอยู่ใกล้กัน คุณสามารถย้ายจุดสิ้นสุดได้หลังจากที่คุณเสร็จสิ้นสคริป

    เสร็จสิ้นส่วน
    หลักสูตรทั้งหมด
  2. ใน FinishLine ใส่สคริปต์ที่มีชื่อว่า RaceManager แล้วเพิ่มตัวแปรหนึ่งเพื่อเก็บจำนวนวินาทีที่ผ่านมาตั้งแต่เริ่มการแข่งขันและตัวแปรอื่นเพื่ออ้างอิงไปยัง FinishLine


    local finishLine = script.Parent
    local timePassed = 0
  3. สร้างฟังก์ชันที่มีชื่อว่า finish()


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. เป็นเจ้าของ:

    • เขียนระเบียบเรียนที่มีชื่อว่า partTouched() ที่ทำงาน finish() เมื่อผู้เล่นแตะมัน
    • เชื่อมต่อส่วนชิ้นสิ้นสุดให้เป็น partTouched()
    • เปรียบเทียบรหัสของคุณกับตัวอย่างด้านล่าง

    local function finish()
    print("touched the finish line")
    end
    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    finish()
    end
    end
    finishLine.Touched:Connect(partTouched)
  5. ทดสอบและตรวจสอบว่า finish() ถูกเรียกเมื่อคุณแตะที่เส้นชัย

ให้ finished() จากการทำซ้ำ

ตอนนี้, เมื่อผู้เล่นสัมผัสเส้นชัย, finish() จะถูกเรียกติดต่อกันตลอดเวลาที่ผู้เล่นสัมผัสส่วนนั้น

ใช้ตัวแปร เป็นบูลีน ซึ่งเก็บค่าจริงหรือค่าปลอมไว้ เพื่อให้แน่ใจว่าจะเรียก เสร็จสิ้น() เท่านั้น

  1. สร้างแป้นใหม่ที่มีชื่อว่า raceActive และตั้งมันเป็น true


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- วิ่งเมื่อผู้เล่นแตะตรงสิ้นสุด
    local function finish()
  2. เพิ่มเงื่อนไขที่สองให้กับ if เพื่อตรวจสอบว่า raceActive เป็นจริงก่อนที่จะเรียก finish()


    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and raceActive == true then
    finish()
    end
    end
  3. เพื่อหยุด finish() จากการโทรอีกครั้งตั้งค่า raceActive เป็น false


    local function finish()
    print("touched the finish line")
    raceActive = false
    end
  4. ทดสอบเกมของคุณเพื่อให้แน่ใจว่าคุณเห็นประกาศพิมพ์ทดสอบเกมของคุณเเค่ครั้งเดียว

การเก็บบันทึกเวลา

เหมือน if สถานะ, สถานะเวลาสามารถใช้เงื่อนไขเพื่อดูว่ามันควรทำงานหรือไม่ เพื่อจะนับเวลาผู้เล่น, สร้างตัวจับเวลาโดยใช้ if สถานะ true do ล็อปที่เฉพาะเวลาเท่านั้น.

  1. ในด้านล่างของสคริปต์, ใส่ while raceActive == true do ปุ่ม Enter เพื่อเสร็จสิ้นอัตโนมัติและเพิ่ม end


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    end
  2. เพื่อตรวจสอบเวลาของผู้เล่นในห่วงโซ่ เพิ่ม 1 ไปยังตัวแปร timePassed ทุกวินาที


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. เล่นเกมและตรวจสอบว่าคุณเห็นแต่ละวินาทีที่ปรากฏในหน้าต่างการออก力

มอบเหรียญผู้เล่น

เพื่อจบลงไปใช้ if การดำเนินการใช้ if สถานะและสอง if สถานะเพื่อตรวจสอบเวลาการจบของผู้เล่นและให้รางวัลพวกเข

  1. เพื่อยืนยันว่าเหรียญแต่ละเหรียญสามารถได้รับรางวัลได้หรือไม่ ใช้ประโยคพิมพ์


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    end
  2. เพื่อให้ได้รับเหรียญทองให้เขียน if ที่เปรียบเทียบ timePassed กับเวลาที่ต้องการ ตัวอย่างนี้ตรวจสอบว่าเวลาของผู้เล่นน้อยกว่าหรือเท่ากับ 10 วินาทีหรือไม่


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    end
    end
  3. ทดสอบและยืนยันว่าตราทองสามารถได้รับ

เพิ่มเงื่อนไขเพิ่มเติม

ตอนนี้คุณได้ทดสอบเพื่อรับเหรียญทองแล้ว ตอนนี้คุณสามารถใช้เงื่อนไขของโค้ดสำหรับเหรียญอื่น ๆ โดยใช้คำว่า elseif

  1. สำหรับเหรียญเงินใช้ elseif และระยะเวลาที่ต้องการต่อไป ในตัวอย่างนี้ระยะเวลาเป็น 10 วินาที แต่มีขนาดใหญ่กว่า 10 วินาที แต่น้อยกว่าหรือเท่ากับ 20 วินาที


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    end
    end
  2. ใช้รูปแบบเดียวกับเหรียญบรอนซ์ ตรวจสอบรหัสของคุณด้วยตัวอย่างด้านล่าง


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("You get a bronze medal!")
    end
    end
  3. ทดสอบเพื่อรับรางวัลเงินและทองแดง

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

หากคุณไม่เห็นเมทัลลองเงินและเมทัลลองทองปรากฏขึ้นมา ลองใช้หนึ่งในต่อไปนี้

  • แต่ละ elseif ควรมีหลังจากเงื่อนไขของมัน
  • ใน partTouched() ให้แน่ใจว่าเงื่อนไขที่สองของ if ใช้ == เช่นใน raceActive == true
  • ตรวจสอบว่าแต่ละ elseif อยู่ในขอบเขต เงื่อนไขแต่ละ elseif จะต้องอยู่ระหว่างบรรทัดแรกของข้อ if/then และสุดท้ายของข้อเรียนรู้

การเพิ่มเงื่อนไขอื่น

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

  1. ด้านล่างของล่าสุด elseif และด้านบน end เริ่มต้นใหม่และพิมพ์ else นี้ ในขณะที่ด้านล่าง else ให้ใช้ประโยคพิมพ์เพื่อเรียกให้พวกเขาลองอีกครั้ง


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("You get a bronze medal!")
    else
    print("Try again!")
    end
    end

2. ทดสอบเล่นเพื่อดูข้อความอื่น

สรุป

โครงสร้างการควบคุมสามารถมีมากกว่าหนึ่งสถานการณ์ ใช้ if ถ้าคำสั่งเพื่อตั้งค่าคำสั่งเริ่มต้นเพื่อตรวจสอบแล้วจากนั้นเพิ่มเงื่อนไข elseif ตามที่จำเป็น

เริ่มต้นที่ด้านบนของตัวแปรทั้งหมดจะได้รับการตรวจสอบ รหัสเงื่อนไขอื่น ๆ จะไม่ได้รับการตรวจสอบ และโค้ดของพวกเขาจะไม่ดำเนินการ

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

  • เพิ่มรหัสให้กับผู้เล่นเพื่อให้พวกเขาสามารถทำซ้ำการแข่งขันได้โดยการแตะต้องเส้นสตาร์ทเมื่อพวกเขาจบ
  • ออกแบบวิธีการแสดงเวลาในระหว่างการแข่งขัน คุณสามารถแสดงเวลาบนส่วนหนึ่งโดยใช้ Surface GUI เช่นใน การสร้างสะพานเวลา tutorial
Completed script

local timePassed = 0
local finishLine = script.Parent
-- ใช้เพื่อให้แน่ใจว่าไม่มีการทำซ้ำของคุณได้รับการปรับปรุงเมื่อสิ้นสุดการแข่งขัน
local raceActive = true
-- จะปรากฏเมื่อผู้เล่นแตะที่เส้นชัยและแสดงรางวัลให้
local function finish()
raceActive = false
print("You finished in " .. timePassed)
if timePassed <= 10 then
print("You get a gold medal!")
elseif timePassed > 10 and timePassed <= 20 then
print("You get a silver medal!")
elseif timePassed > 20 and timePassed <= 30 then
print("You get a bronze medal!")
else
print("Try again!")
end
end
-- ตรวจสอบว่าผู้เล่นสัมผัสตำแหน่งนั้นเมื่อมีการแข่งขัน
local function partTouched(otherPart)
local character = otherPart.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and raceActive == true then
finish()
end
end
finishLine.Touched:Connect(partTouched)
-- ติดตามเวลาการแข่งขันในขณะที่การแข่งขันกำลังดำเนินอยู่ ต้องอยู่ด้านล่างสุดของสคริป
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end