ซื้อการอัพเกรด

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

นี่ทำให้เราไปถึงขั้นสุดท้ายของวงจรเกม - การซื้ออัพเกรด โดยการให้ผู้เล่นซื้ออัพเกรดที่เพิ่มขนาดกระเป๋าของไอเท็มของพวกเขา, พวกเขาสามารถเก็บรวบรวมไอเท็มมากขึ้นต่อการเดินทางและรับเหรียญมากขึ

การสร้างร้านค้า

แต่ละร้านค้าจะมีปุ่มที่ผู้เล่นคลิกเพื่อซื้อกระเป๋ารายการขนาดใหญ่ ร้านค้าเองจะเป็นส่วนหนึ่งที่มี SurfaceGUI ซึ่งเป็นรายการที่สามารถเขียนข้อความบนชิ้นส่วนได้

การสร้างสัญลักษณ์

  1. ใน Workspace สร้างโมเดลใหม่ที่มีชื่อว่า Shop

  2. ในร้านค้า สร้างบล็อกใหม่ที่มีชื่อว่า BuyButton

  3. ใน BuyButton เพิ่ม GUI พื้นผิวใหม่โดยการคลิก + และเลื่อนเมาส์ไปยัง GUI

  4. ใน Surface GUI เพิ่ม TextLabel ใหม่ที่มีชื่อว่า BuyText ป้ายเล็กจะปรากฏขึ้นที่ไหนสักแห่งในตัวอักษร

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

เปลี่ยนข้อความบนป้าย

ตอนนี้ TextLabel เล็กมากและยากสำหรับผู้เล่นที่จะเห็น มันต้องการเพิ่มขนาด

  1. ในสรรพสิ้นข้อความ, คลิกที่ลูกศรที่อยู่ข้างๆ ขนาด เปลี่ยน เอียนเซ็ต สำหรับ X (ซ้ายและขวา) และ Y (ขึ้นและลง) เป็น 0

  2. เปลี่ยน ขนาดเครื่องชั่ง ของ X และ Y เป็น 0.5 เพื่อสร้างรูปสี่เหลี่ยม

  3. เลื่อนขึ้นในสรรพสิ้นใน TextLabel และคลิกลูกศรซ้ายของ AnchorPoint ใส่ 0.5 สำหรับ X และ Y ป้อนตัวอักษรใน 0.5 สำหรับ X และ Y คุณจะย้ายส่วนของแท็งกี้ออกจากมุมมอง แต่คุณจะตำแหน่งตัวอย่างได้อย่างถูก

  4. เลื่อนลงในโปรไฟล์และเปิด ตําแหน่ง เปลี่ยนขนาดของ X และ Y ให้เป็น 0.5 เพื่อให้กล่องอยู่ในตำแหน่งกึ่งกลาง

  5. ในสรรพสินค้าText โปรไฟล์เลื่อนลงและเปลี่ยน ข้อความข้างล่าง เป็นสิ่งที่อธิบายได้ อินสแตนซ์: "Buy Larger Bag: 100 gold" .

  6. ตรวจสอบ TextScaled เพื่อให้ บน อยู่ นี่จะปรับแต่งขนาดข้อความของคุณให้เหมาะกับกล่อง

การเพิ่มตัวตรวจจับการคลิก

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

  1. ในปุ่มซื้อ เพิ่ม ClickDetector

  2. ใน BuyButton เพิ่มสคริปต์ใหม่ที่มีชื่อว่า BuyScript และให้ความคิดเห็นที่อธิบายไว้

  3. ใน BuyScript สร้างตัวแปรเพื่อเก็บส่วนปุ่มและคลิกที่ตัวตรวจจับ


    -- ให้ผู้เล่นคลิกปุ่มเพื่อซื้อการอัพเกรดที่เพิ่มขนาด
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. สร้างฟังก์ชันใหม่ที่มีชื่อว่า giveUpgrade() ที่ได้รับตัวอักษรนี้คือ player ฟังก์ชันจะอัปเกรดพื้นที่ของผู้เล่นเมื่อพวกเขาคลิกปุ่ม


    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
    local function giveUpgrade(player)
    end
  5. หลังจากฟังก์ชัน ใส่เหตุการณ์ของเครื่องมือตรวจจับการคลิก MouseClick ในความสัมพันธ์กับ giveUpgrade() ฟังก์ชัน


    local function giveUpgrade(player)
    end
    clickDetector.MouseClick:Connect(giveUpgrade)
  6. เพิ่มคำพิมพ์ใน giveUpgrade() เพื่อทดสอบฟังก์ชัน


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. เล่น โครงการของคุณ คลิกปุ่มและตรวจสอบว่าคุณเห็นข้อความในหน้าต่างการออก

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

ปัญหา: คุณไม่สามารถคลิกปุ่มหรือตัวเลือกเมาส์ไม่ปรากฏบนปุ่ม

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

ซื้อการอัพเกรด

ด้วยปุ่มที่ทำงานได้, มันเป็นเวลาที่จะเพิ่มโค้ดใน giveUpgrade เพื่อลบทองของผู้เล่นในการแลกเปลี่ยนกับกระเป๋าที่อัพเกรด

การเพิ่มตัวแปรอัพเกรด

แต่ละการอัพเกรดจะมีสองปัจจัย: ค่าใช้จ่ายของการอัพเกรดและจำนวนพื้นที่

  1. ใน BuyScript ภายใต้ local clickDetector สร้างสองแปร:

    • newSpace : จำนวนพื้นที่ที่การอัพเกรดเพิ่มเมื่อซื้อ
    • upgradeCost : อัปเกรด

    -- อัปเกรด
    local newSpaces = 10
    local upgradeCost = 100

การอนุญาตการอัพเกรด

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

  1. ใน giveUpgrade() ใส่ตัวอักษรต่อไปนี้เพื่อรับสถิติของผู้เล่นเพื่อให้คุณสามารถเข้าถึงตัวแปรทองและพื้นที่ของพวกเขา


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- รับบอร์ดจัดอันดับของผู้เล่นเพื่อรับ IntValues อื่น
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- รับเงินและพื้นที่ของผู้เล่นเพื่อทำการเปลี่ยนแปลง
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. หลังจากเขียนแปรสำหรับพื้นที่สร้าง if ถ้าค่าของ playerGold มีมากขึ้นหรือเท่ากับค่าปรับปรุง


    local function giveUpgrade(player)
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    -- อัปเกรด
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. ในสถานะ if ลบค่าใช้จ่ายของการอัปเกรดออกจากทองของผู้เล่น


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- ไอเท็ม
    playerGold.Value -= upgradeCost
    end
  4. ในตัวอักษรต่อไป ใส่จำนวนช่องของผู้เล่นปัจจุบันพร้อมกับช่องใหม่ที่ได้รับการอัปเกรด


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    playerGold.Value -= upgradeCost
    playerSpaces.Value += newSpaces
    end
  5. เล่นโครงการของคุณและตรวจสอบกระดานผู้นําเพื่อตรวจสอบว่าการอัพเกรดพื้นที่ทํางานได้หรือไม่

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

ในขณะนี้การอัพเกรดไม่ทำงานตามที่ตั้งใจไว้ ลองใช้หนึ่งในตัวเลือกต่อไปนี้

  • ให้แน่ใจว่ามีข้อความใน () ของ FindFirstChild() ที่มีการอ้างอิงในทั้งสองด้านเช่น leaderstats * ตรวจสอบว่าแต่ละสตริงใน FindFirstChild คือเหมือนกับชื่อของ IntValue ในสคริปท์ PlayerSetup เช่นเดียวกับการใช้รูบี้เป็นเงิน คุณควรมี FindFirstChild("Rubies") .
  • ให้แน่ใจว่า giveUpgrade() อยู่เหนือ clickDetector.MouseClick

สำเร็จ BuyScript สคริป

สามารถอ้างอิงได้ด้านล่างเป็นเวอร์ชันที่เสร็จสิ้นของสคริปต์


-- ให้ผู้เล่นคลิกปุ่มเพื่อซื้อการอัพเกรดที่เพิ่มขนาดสูงสุด
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- อัปเกรด
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- รับบอร์ดจัดอันดับของผู้เล่นเพื่อรับ IntValues อื่น
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- รับเงินและพื้นที่ของผู้เล่นเพื่อทำการเปลี่ยนแปลง
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- อัปเกรด
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- ไอเท็ม
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)