โครงสร้างการควบคุมสามารถมีมากกว่าหนึ่งเงื่อนไข เครื่องมือค้นหา else และ elseif สามารถสร้างสถานการณ์เพิ่มเติมสำหรับสิ่งที่ควรเกิดขึ้นภายใต้สถานการณ์ต่างๆ ได้ สถานะของระเบียบ
แสดงรูปแบบสำหรับ else และอื่น ๆ
if isGreen thenprint("Go")elseif isYellow thenprint("Slow")elseif isPedestrians thenprint("Wait")elseprint("stop")end
ในโครงการนี้ else และ elseif ใช้เพื่อเขียนรหัสเส้นทางปาระเบิดที่ผู้วิ่งได้รับรางวัลขึ้นอยู่กับเวลาที่พวกเขาจบลง
การเขียนสภาวะหลาย
สำหรับโครงการนี้คุณสามารถเขียนคำประกาศที่ไม่ซ้ำใครสำหรับแต่ละเหรียญเพื่อมอบให้กับผู้เล่น แต่นั่นใช้เวลานานมาก ดังนั้นใช้เวลาในการเล่นเกมของคุณต่อไปเรื่อย ๆ เพื่อให้แน่ใจว่าคุณจะได้รับประสบการณ์
คำถ้าทั้งหมด
if finishTime < 5 then-- รับป้ายทองendif finishTime >= 5 and <= 10 then-- รับป้ายสีเงินendif 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 ประกาศจะเริ่มต้นที่ด้านบนและเฉพาะเวลาเท่านั้นที่จะเริ่มต้นโค้ดสำหรับประกาศนี้ ครั้งแรก ที่มันพบ
การตั้งค่าสถานที่แข่งขัน
เริ่มโดยวางจุดเริ่มต้นของหลักสูตรและจุดสิ้นสุด, แล้วสร้างสคริปเพื่อจะเวลาผู้เล่นและรางวัลต่างๆ
สร้างส่วนที่แนบมัดชื่อว่า FinishLine สร้างการทดสอบเร็วขึ้นโดยวางจุดเริ่มต้นและจุดสิ้นสุดอยู่ใกล้กัน คุณสามารถย้ายจุดสิ้นสุดได้หลังจากที่คุณเสร็จสิ้นสคริป
ใน FinishLine ใส่สคริปต์ที่มีชื่อว่า RaceManager แล้วเพิ่มตัวแปรหนึ่งเพื่อเก็บจำนวนวินาทีที่ผ่านมาตั้งแต่เริ่มการแข่งขันและตัวแปรอื่นเพื่ออ้างอิงไปยัง FinishLine
local finishLine = script.Parentlocal timePassed = 0สร้างฟังก์ชันที่มีชื่อว่า finish()
local timePassed = 0local finishLine = script.Parentlocal function finish()endเป็นเจ้าของ:
- เขียนระเบียบเรียนที่มีชื่อว่า partTouched() ที่ทำงาน finish() เมื่อผู้เล่นแตะมัน
- เชื่อมต่อส่วนชิ้นสิ้นสุดให้เป็น partTouched()
- เปรียบเทียบรหัสของคุณกับตัวอย่างด้านล่าง
local function finish()print("touched the finish line")endlocal function partTouched(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenfinish()endendfinishLine.Touched:Connect(partTouched)ทดสอบและตรวจสอบว่า finish() ถูกเรียกเมื่อคุณแตะที่เส้นชัย
ให้ finished() จากการทำซ้ำ
ตอนนี้, เมื่อผู้เล่นสัมผัสเส้นชัย, finish() จะถูกเรียกติดต่อกันตลอดเวลาที่ผู้เล่นสัมผัสส่วนนั้น
ใช้ตัวแปร เป็นบูลีน ซึ่งเก็บค่าจริงหรือค่าปลอมไว้ เพื่อให้แน่ใจว่าจะเรียก เสร็จสิ้น() เท่านั้น
สร้างแป้นใหม่ที่มีชื่อว่า raceActive และตั้งมันเป็น true
local timePassed = 0local finishLine = script.Parentlocal raceActive = true-- วิ่งเมื่อผู้เล่นแตะตรงสิ้นสุดlocal function finish()เพิ่มเงื่อนไขที่สองให้กับ if เพื่อตรวจสอบว่า raceActive เป็นจริงก่อนที่จะเรียก finish()
local function partTouched(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and raceActive == true thenfinish()endendเพื่อหยุด finish() จากการโทรอีกครั้งตั้งค่า raceActive เป็น false
local function finish()print("touched the finish line")raceActive = falseendทดสอบเกมของคุณเพื่อให้แน่ใจว่าคุณเห็นประกาศพิมพ์ทดสอบเกมของคุณเเค่ครั้งเดียว
การเก็บบันทึกเวลา
เหมือน if สถานะ, สถานะเวลาสามารถใช้เงื่อนไขเพื่อดูว่ามันควรทำงานหรือไม่ เพื่อจะนับเวลาผู้เล่น, สร้างตัวจับเวลาโดยใช้ if สถานะ true do ล็อปที่เฉพาะเวลาเท่านั้น.
ในด้านล่างของสคริปต์, ใส่ while raceActive == true do ปุ่ม Enter เพื่อเสร็จสิ้นอัตโนมัติและเพิ่ม end
finishLine.Touched:Connect(partTouched)while raceActive == true doendเพื่อตรวจสอบเวลาของผู้เล่นในห่วงโซ่ เพิ่ม 1 ไปยังตัวแปร timePassed ทุกวินาที
finishLine.Touched:Connect(partTouched)while raceActive == true dotask.wait(1)timePassed += 1print(timePassed)endเล่นเกมและตรวจสอบว่าคุณเห็นแต่ละวินาทีที่ปรากฏในหน้าต่างการออก力
มอบเหรียญผู้เล่น
เพื่อจบลงไปใช้ if การดำเนินการใช้ if สถานะและสอง if สถานะเพื่อตรวจสอบเวลาการจบของผู้เล่นและให้รางวัลพวกเข
เพื่อยืนยันว่าเหรียญแต่ละเหรียญสามารถได้รับรางวัลได้หรือไม่ ใช้ประโยคพิมพ์
local function finish()raceActive = falseprint("You finished in " .. timePassed)endเพื่อให้ได้รับเหรียญทองให้เขียน if ที่เปรียบเทียบ timePassed กับเวลาที่ต้องการ ตัวอย่างนี้ตรวจสอบว่าเวลาของผู้เล่นน้อยกว่าหรือเท่ากับ 10 วินาทีหรือไม่
local function finish()raceActive = falseprint("You finished in " .. timePassed)if timePassed <= 10 thenprint("You get a gold medal!")endendทดสอบและยืนยันว่าตราทองสามารถได้รับ
เพิ่มเงื่อนไขเพิ่มเติม
ตอนนี้คุณได้ทดสอบเพื่อรับเหรียญทองแล้ว ตอนนี้คุณสามารถใช้เงื่อนไขของโค้ดสำหรับเหรียญอื่น ๆ โดยใช้คำว่า elseif
สำหรับเหรียญเงินใช้ elseif และระยะเวลาที่ต้องการต่อไป ในตัวอย่างนี้ระยะเวลาเป็น 10 วินาที แต่มีขนาดใหญ่กว่า 10 วินาที แต่น้อยกว่าหรือเท่ากับ 20 วินาที
local function finish()raceActive = falseprint("You finished in " .. timePassed)if timePassed <= 10 thenprint("You get a gold medal!")elseif timePassed > 10 and timePassed <= 20 thenprint("You get a silver medal!")endendใช้รูปแบบเดียวกับเหรียญบรอนซ์ ตรวจสอบรหัสของคุณด้วยตัวอย่างด้านล่าง
local function finish()raceActive = falseprint("You finished in " .. timePassed)if timePassed <= 10 thenprint("You get a gold medal!")elseif timePassed > 10 and timePassed <= 20 thenprint("You get a silver medal!")elseif timePassed > 20 and timePassed <= 30 thenprint("You get a bronze medal!")endendทดสอบเพื่อรับรางวัลเงินและทองแดง
เคล็ดลับการแก้ปัญหา
หากคุณไม่เห็นเมทัลลองเงินและเมทัลลองทองปรากฏขึ้นมา ลองใช้หนึ่งในต่อไปนี้
- แต่ละ elseif ควรมีหลังจากเงื่อนไขของมัน
- ใน partTouched() ให้แน่ใจว่าเงื่อนไขที่สองของ if ใช้ == เช่นใน raceActive == true
- ตรวจสอบว่าแต่ละ elseif อยู่ในขอบเขต เงื่อนไขแต่ละ elseif จะต้องอยู่ระหว่างบรรทัดแรกของข้อ if/then และสุดท้ายของข้อเรียนรู้
การเพิ่มเงื่อนไขอื่น
หากผู้เล่นไม่ได้รับใด ๆ ของเหรียญ คุณควรเปลี่ยนแปลงพวกเขาให้ลองอีกครั้ง ในกรณีนี้คุณสามารถใช้ประโยค else ข้อความๆ ที่เป็นไปได้
ด้านล่างของล่าสุด elseif และด้านบน end เริ่มต้นใหม่และพิมพ์ else นี้ ในขณะที่ด้านล่าง else ให้ใช้ประโยคพิมพ์เพื่อเรียกให้พวกเขาลองอีกครั้ง
local function finish()raceActive = falseprint("You finished in " .. timePassed)if timePassed <= 10 thenprint("You get a gold medal!")elseif timePassed > 10 and timePassed <= 20 thenprint("You get a silver medal!")elseif timePassed > 20 and timePassed <= 30 thenprint("You get a bronze medal!")elseprint("Try again!")endend
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