ซื้ออัพเกรด

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

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

เลือกซื้อ

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

สร้างป้าย

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

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

  3. ในปุ่มซื้อ เพิ่ม GUI พื้นใหม่โดยคลิกที่ + และเลื่อนไปที่ GUI

  4. ใน GUI พื้นผิว เพิ่มฉลากข้อความใหม่ชื่อว่า BuyText ฉลากขนาดเล็กจะปรากฏที่ไหนสักแห่งบนชิ้นส่วน

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

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

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

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

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

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

  4. เลื่อนลงในคุณสมบัติและเปิด ตำแหน่ง เปลี่ยนขนาดของ X และ Y เป็น 0.5 เพื่อให้กล่องอยู่กลาง

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

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

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

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

  1. ในปุ่มซื้อเพิ่มตัวตรวจจับคลิก

  2. ในปุ่มซื้อ เพิ่มสคริปต์ใหม่ชื่อ 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 เพื่อ 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 เป็นเหมือนกับชื่อของ 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)