Mua nâng cấp

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Điều này dẫn chúng ta đến giai đoạn cuối của vòng lặp trò chơi - mua nâng cấp.Bằng cách cho phép người chơi mua nâng cấp làm tăng kích cỡ túi vật phẩm của họ, họ có thể thu thập nhiều vật phẩm hơn mỗi chuyến và kiếm thêm vàng.

Tạo một cửa chọn mua

Mỗi cửa hàng sẽ có một nút mà người chơi nhấp để mua túi vật phẩm lớn hơn.Cửa hàng chính sẽ là một phần với SurfaceGUI, một vật phẩm cho phép viết văn bản lên các bộ phận.

Tạo dấu hiệu

  1. Trong Workspace, tạo một mô hình mới có tên Shop.

  2. Trong Cửa hàng, tạo một phần khối mới có tên BuyButton.

  3. Trong BuyButton, thêm một GUI bề mặt mới bằng cách nhấp vào + và cuộn đến GUI.

  4. Trong Surface GUI, thêm một Thẻ văn bản mới có tên BuyText. Một nhãn nhỏ sẽ xuất hiện ở đâu đó trên phần.

  5. Tùy thuộc vào cách phần được tạo, nhãn có thể ở nơi khác.Nếu bạn không thấy văn bản ở bên bạn muốn, hãy vào SurfaceGUI và tìm tính chất Face.Thay đổi thuộc tính đó cho đến khi bạn thấy nhãn văn bản.

Thay đổi văn bản ký hiệu

Hiện tại, TextLabel thực sự nhỏ và khó để người chơi nhìn thấy. Nó cần phải được mở rộng.

  1. Trong thuộc tính BuyText, nhấp vào mũi tên bên cạnh Kích thước . Thay đổi Offset cho X (bên trái và bên phải) và Y (trên và xuống) thành 0.

  2. Thay đổi tỉ lệ của X và Y thành 0.5 để tạo một hình vuông.

  3. Cuộn lên trong các thuộc tính TextLabel và nhấp vào mũi tên bên trái của AnchorPoint .Nhập 0.5 cho X và Y.Điều này di chuyển một phần nhãn của bạn ra khỏi tầm mắt nhưng bạn sẽ đặt nó đúng cách tiếp theo.

  4. Cuộn xuống trong các tính năng và mở Vị trí . Thay đổi phạm vi của X và Y thành 0.5 để hộp được đặt ở giữa.

  5. Trong tính năng BuyText, cuộn xuống và thay đổi Văn bản thành một cái gì đó mô tả. Ví ví dụ / trường hợp: "Buy Larger Bag: 100 gold" .

  6. Kiểm tra TextScaled để được trên . Nó tự động thay đổi văn bản của bạn để nó phù hợp với hộp.

Thêm một máy dò nhấp

Người chơi sẽ mua vật phẩm bằng cách nhấp vào cửa hàng thay vì chỉ chạm vào nó.Tập lệnh sẽ sử dụng máy phát hiện nhấp để xác định xem người chơi đã nhấp vào biển hiệu cửa hàng hay chưa. ClickDetectors là các đối tượng cho phép người dùng tương tác với một thứ gì đó trong môi trường, chẳng hạn như mở cửa.

  1. Trong nút Mua, thêm một ClickDetector.

  2. Trong BuyButton, thêm một kịch bản mới có tên BuyScript và cho nó một bình luận mô tả.

  3. Trong BuyScript, tạo các biến để lưu phần nút và nhấp vào máy dò.


    -- Hãy để người chơi nhấp vào một nút để mua nâng cấp làm tăng không gian
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. Tạo một chức năng mới có tên là giveUpgrade() nhận một tham số có tên là player .Chức năng sẽ nâng cấp không gian của người chơi bất cứ khi nào họ nhấp vào nút.


    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
    local function giveUpgrade(player)
    end
  5. Sau chức năng, hãy nhập sự kiện kết nối của máy phát hiện nhấp vào MouseClick vào chức năng giveUpgrade().


    local function giveUpgrade(player)
    end
    clickDetector.MouseClick:Connect(giveUpgrade)
  6. Thêm một tuyên bố in ở giveUpgrade() để kiểm tra chức năng.


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. Chơi dự án của bạn. Nhấp vào nút và kiểm tra xem bạn có thấy văn bản trong cửa sổ Thành phẩm không.

Mẹo khắc phục sự cố

Vấn đề: Bạn không thể nhấp vào nút hoặc con trỏ chuột không xuất hiện trên nút.

  • Hãy chắc chắn rằng объект ClickDetector là con của phần bạn đang cố gắng nhấp vào.
  • Kiểm tra xem nhân vật của bạn đủ gần nút hay không. Hoặc, hãy chắc chắn rằng công cụ không được trang bị.

Mua nâng cấp

Với một nút hoạt động, đã đến lúc thêm mã vào giveUpgrade để xóa vàng của một người chơi để đổi lấy một túi nâng cấp.

Thêm biến nâng cấp

Mỗi nâng cấp sẽ có hai biến: chi phí nâng cấp và số lượng không gian nó có.

  1. Trong BuyScript, dưới local clickDetector, tạo hai biến:

    • newSpace : Bao nhiêu không gian nâng cấp được thêm khi mua.
    • upgradeCost : Chi phí của một nâng cấp duy nhất

    -- Biến cho nâng cấp
    local newSpaces = 10
    local upgradeCost = 100

Tặng nâng cấp

Trước khi bán người chơi nâng cấp, bạn cần kiểm tra xem họ có đủ tiền không. Nếu họ làm như vậy, bạn sẽ thêm vào số lượng tối đa không gian của họ.

  1. Trong giveUpgrade(), nhập dưới đây để có được chỉ số của người chơi để bạn có thể truy cập các biến vàng và không gian của họ.


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Nhận bảng xếp hạng của người chơi để lấy các IntValues khác
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Nhận tiền và không gian của người chơi để thực hiện các thay đổi
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. Sau khi viết các biến cho không gian, tạo một if tuyên bố nếu giá trị của playerGold lớn hơn hoặc bằng chi phí nâng cấp.


    local function giveUpgrade(player)
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    -- Kiểm tra xem người chơi có đủ tiền để mua nâng cấp hay không
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. Trong tuyên bố if, trừ chi phí nâng cấp từ vàng của người chơi.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- Trừ chi phí của vật phẩm khỏi tiền của người chơi
    playerGold.Value -= upgradeCost
    end
  4. Trên dòng tiếp theo, thêm số không gian hiện tại của người chơi cùng với các không gian mới được cấp cho mỗi lần nâng cấp.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    playerGold.Value -= upgradeCost
    playerSpaces.Value += newSpaces
    end
  5. Chơi dự án của bạn và kiểm tra bảng xếp hạng để kiểm tra xem nâng cấp không gian có hoạt động không.

Mẹo khắc phục sự cố

Tại thời điểm này, các nâng cấp không hoạt động như dự định, hãy thử một trong những điều sau.

  • Hãy chắc chắn rằng bất cứ thứ gì trong của có dấu ngoặc trên cả hai bên, như .
  • Kiểm tra xem mỗi chuỗi trong FindFirstChild giống như tên của IntValue trong kịch bản PlayerSetup.Ví dụ, nếu mã của bạn sử dụng Ruby là tiền, bạn nên có FindFirstChild("Rubies") .
  • Hãy chắc chắn rằng giveUpgrade() ở trên clickDetector.MouseClick .

Hoàn thành kịch bản BuyScript

Một phiên bản hoàn thành của kịch bản có thể tham chiếu dưới đây.


-- Hãy để người chơi nhấp vào một nút để mua nâng cấp làm tăng MaxSpaces
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Biến cho nâng cấp
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Nhận bảng xếp hạng của người chơi để lấy các IntValues khác
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Nhận tiền và không gian của người chơi để thực hiện các thay đổi
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Kiểm tra xem người chơi có đủ tiền để mua nâng cấp hay không
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Trừ chi phí của vật phẩm khỏi tiền của người chơi
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)