Người chơi giờ đây có thể thu thập xu và mất chúng khi chúng chết, nhưng xu không làm bất cứ điều gì, và hầu hết thế giới trò chơi không truy cập được mà không có khả năng nhảy rất cao. Bộ phận này của hướng dẫn cho bạn cách hoàn thành logic cho trải n
Tạo nút Nâng cấp
Giao diện 2D trong Roblox thường được tạo bởi một loạt các thành phần GUI bên trong một container GUI. Trong trường hợp này, bạn chỉ cần một thành phần TextButton nói Nâng cấp nhảy (5 đồng xu) bên trong một container ScreenGui
Để tạo GUI:
- Trong cửa sổ Explorer , thêm một thư mục mới vào ReplicatedStorage , sau đó đổi tên thư mục thành Instances . Bất kỳ đối tượng nào trong 1> ReplicatedStorage1> đều có thể truy cập được từ mỗi máy chủ Roblox của mỗi người chơi, nơi mà G
- Thêm một ScreenGUI đối tượng vào thư mục Instances .
- Chọn đối tượng ScreenGUI , sau đó trong cửa sổ Properties 1. Đặt Tên để JumpPurchaseGui . 2. Vô hiệu hóa ResetOnSpawn để đảm bảo GUI vẫn được cha mẹ khi họ hồi sinh.
- Trong cửa sổ Explorer , hãy nhúc một TextButton vào JumpPurchaseGui container, sau đó đổi tên button text thành 1> JumpButton1> .
- (Tùy chọn) Tùy chỉnh nhìn và vị trí nút bằng cách cấu hình các thuộc tính của nó. Các gợi ý đơn giản bao gồm:
- Đặt thuộc tính Văn bản lên Nâng cấp nhảy (5 đồng xu) .
- Đặt Kích thước chữ tính năng lên 25 .
- Đặt AnchorPoint để 1, 1 và Vị trí để 1, 0,1, 0 để di chuyển nút đến góc phải dưới.
Bạn sẽ thêm nút vào GUI của người chơi sau đây trong hướng dẫn này, nhưng trước khi bạn làm điều đó, bạn cần phải xác định tất cả các luật và dữ liệu cần thiết cho nút hoạt động.
Định nghĩa Dữ liệu Quyền Nhảy
Hiện tại, chỉ số tiền được lưu cho mỗi người chơi trong modul PlayerData script. Bạn cũng cần phải lưu và cập nhật sức nhảy trong cùng một cách. Vì các hàm trong PlayerData là không chặ
Để cập nhật mô-đun PlayerData để lưu trữ sức nhảy:
Trong cửa sổ Explorer , mở script PlayerData trong ServerStorage .
Thay thế mã trong script với mẫu sau đây, which initializes a Jump value for each player alongside their existing Coins value:
local PlayerData = {}PlayerData.COIN_KEY_NAME = "Coins"PlayerData.JUMP_KEY_NAME = "Jump"local playerData = {--[[[userId: string] = {["Coins"] = coinAmount: number,["Jump"] = jumpPower: number}--]]}local DEFAULT_PLAYER_DATA = {[PlayerData.COIN_KEY_NAME] = 0,[PlayerData.JUMP_KEY_NAME] = 0,}local function getData(player)local data = playerData[tostring(player.UserId)] or DEFAULT_PLAYER_DATAplayerData[tostring(player.UserId)] = datareturn dataendfunction PlayerData.getValue(player, key)return getData(player)[key]endfunction PlayerData.updateValue(player, key, updateFunction)local data = getData(player)local oldValue = data[key]local newValue = updateFunction(oldValue)data[key] = newValuereturn newValueendreturn PlayerData
Cập nhật Dữ liệu Sức Nhảy
Bây giờ PlayerData có thể theo dõi sức nhảy, bạn cần phải tích hợp logic trên máy chủ để nâng cấp sức nhảy từ yêu cầu của khách người chơi.
Máy chủ và client có thể truyền thông qua bất kỳ Remote Events hoặc Remote Functions . Các sự kiện remote không tạo ra khi bị kích hoạt và phù hợp cho một cuộc trò chuyện một chiều. Các sự kiện remote được tạo cho đến khi nó nhận được
Để thực hiện nâng cấp nhảy:
Trong cửa sổ Explorer , mở thư mục Instances ở ReplicatedStorage .
Làm thế nào để tạo một RemoteFunction vào thư mục Instances, sau đó đổi tên đơn vị điều khiển để thành tăng sức mạnh nhảy . Bạn luôn tạo đơn vị điều khiển ở dưới 2> ReplicatedStorage2> bởi vì cả client và server đều
Trong cửa sổ Explorer , chọn StarterPlayer .
Trong cửa sổ Tính chất , bật Giá trị nhảy nhân vật . Bởi mặc định, giá trị nhảy nhân vật của một nhân vật không định số lượng nhảy mà một nhân vật nhảy, vì vậy nó cần được bật.
Trong cửa sổ Explorer , hãy nhúc một mô-đun mới vào ServerScriptService , sau đó đổi tên mô-đun thành JumpService . Skript này sẽ chứa logik cho nâng cấp nhảy.
Thay thế mã mặc định bằng mã sau đây:
-- Dịch Vụlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local ServerStorage = game:GetService("ServerStorage")local Players = game:GetService("Players")-- Các mô-đunlocal Leaderboard = require(ServerStorage.Leaderboard)local PlayerData = require(ServerStorage.PlayerData)-- Sự kiệnlocal IncreaseJumpPowerFunction = ReplicatedStorage.Instances.IncreaseJumpPowerFunctionlocal JUMP_KEY_NAME = PlayerData.JUMP_KEY_NAMElocal COIN_KEY_NAME = PlayerData.COIN_KEY_NAMElocal JUMP_POWER_INCREMENT = 30local JUMP_COIN_COST = 5local function updateJumpPower(player, updateFunction)-- Cập nhật bảng quyền nhảylocal newJumpPower = PlayerData.updateValue(player, JUMP_KEY_NAME, updateFunction)-- Cập nhật sức nhảy của người chơilocal character = player.Character or player.CharacterAdded:Wait()local humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenhumanoid.JumpPower = newJumpPower-- Cập nhật bảng xếp hạng nhảyLeaderboard.setStat(player, JUMP_KEY_NAME, newJumpPower)endendlocal function onPurchaseJumpIncrease(player)local coinAmount = PlayerData.getValue(player, COIN_KEY_NAME)if coinAmount < JUMP_COIN_COST thenreturn falseend-- Tăng sức nhảy của người chơiupdateJumpPower(player, function(oldJumpPower)oldJumpPower = oldJumpPower or 0return oldJumpPower + JUMP_POWER_INCREMENTend)-- Cập nhật bảng xếp hạng tiền xulocal newCoinAmount = PlayerData.updateValue(player, COIN_KEY_NAME, function(oldCoinAmount)return oldCoinAmount - JUMP_COIN_COSTend)-- Cập nhật bảng xếp hạng tiền xuLeaderboard.setStat(player, COIN_KEY_NAME, newCoinAmount)return trueendlocal function onCharacterAdded(player)-- Đặt lại sức nhảy của người chơi khi nhân vật được thêmupdateJumpPower(player, function(_)return 0end)end-- Khởi tạo bất kỳ người chơi nào đã được thêm trước khi kết nối với sự kiện PlayerAddedfor _, player in Players:GetPlayers() doonCharacterAdded(player)end-- Khởi tạo người chơi từ sự kiện PlayerAdded bình thườnglocal function onPlayerAdded(player)player.CharacterAdded:Connect(function()onCharacterAdded(player)end)endlocal function onPlayerRemoved(player)updateJumpPower(player, function(_)return nilend)endIncreaseJumpPowerFunction.OnServerInvoke = onPurchaseJumpIncreasePlayers.PlayerAdded:Connect(onPlayerAdded)Players.PlayerRemoving:Connect(onPlayerRemoved)Giải thích mãCác mục tiếp theo mô tả mã chi tiết hơn.
Cập nhật dữ liệu quyền lực nhảy - updateJumpPower()
Xác minh yêu cầu máy chủ - onPurchaseJumpIncrease() kiểm tra người chơi có thực sự có số lượng tiền bạc cần thiết để mua nâng cấp. Tất cả các yêu cầu từ khách hàng đến máy chủ nên được 0> xác min
Thêm nút vào GUI người chơi
Một ScreenGui đối tượng chỉ xuất hiện trên màn hình nếu nó được kết nối với một người chơitượng PlayerGui để làm cho nó trở thành một đối người chơitrên màn hình. Bởi mặc định,
Để thêm nút vào GUI của người chơi khi họ tham gia:
Trong cửa sổ Explorer , tạo một Script trong ReplicatedStorage .
Chọn script, sau đó trong cửa sổ Tên tài sản ,
- Đặt Tên vào JumpButtonClickHandler .
- Đặt RunContext để Client . Điều này cho phép máy chủ chạy luôn màn hình này để tối ưu hóa giao thức mạng.
Trong mã mở, thay thế mã mặc định bằng mã sau đây:
local ReplicatedStorage = game:GetService("ReplicatedStorage")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuilocal IncreaseJumpPowerFunction = ReplicatedStorage.Instances.IncreaseJumpPowerFunctionlocal jumpPurchaseGui = ReplicatedStorage.Instances.JumpPurchaseGuilocal jumpButton = jumpPurchaseGui.JumpButtonlocal function onButtonClicked()local success, purchased = pcall(IncreaseJumpPowerFunction.InvokeServer, IncreaseJumpPowerFunction)if not success then-- đã mua sẽ là thông điệp lỗi nếu thành công là saierror(purchased)elseif success and not purchased thenwarn("Not enough coins!")endendjumpButton.Activated:Connect(onButtonClicked)-- Thêm JumpPurchaseGui vào Gui của người chơijumpPurchaseGui.Parent = playerGuiGiải thích mãCác mục tiếp theo mô tả mã chi tiết hơn.
- Nhận các tham chiếu đến GUI và chức năng máy chủ - Các biến IncreaseJumpPowerFunction , jumpPurchaseGui và 0> jumpButton0> đều chứa các tham chiếu đến chức năng và GUI mà bạn sẽ cần sau đó.
- Xác định trình xử lý sự kiện - onButtonClicked() định nghĩa logic cho khi người dùng nhấp vào nút nâng cấp. Nó sử dụng pcall() (gọi
- Kết nối các thành phần đến nút - Sự kiện Activated trên tất cả các nền tảng, bao gồm chuột, màn hình cảm ứng hoặc gamepad. Nó được kích hoạt khi một nhấp chuột , 0> ch
Thử nghiệm
Bây giờ bạn nên có thể mua nâng cấp nhảy với đồng xu bằng nút nâng cấp. Để kiểm tra dự án:
Ở thanh menu, hãy nhấp vào nút Chơi . Studio tham gia vào chế độ thử nghiệm.
Nếu các script của bạn hoạt động đúng cách, một nút để mua quyền năng nhảy xuất hiện trên màn hình. Hãy thử nhấp vào nút trước khi bạn thu thập bất kỳ đồng xu nào để kiểm tra rằng nó không cho bạn thêm quyền năng nhảy, sau đó hãy thử thu thập một số đồng xu và xem nó có là
Bây giờ mã đã hoàn thành, hãy thử cân bằng trò chơi thông qua số lượng và vị trí của các đồng xu. Thêm nhiều đồng xu nếu trò chơi cảm thấy quá chậm hoặc giảm đi các đồng xu và đặt chúng vào những nơi thách thức nếu nó cảm thấy quá dễ dàng và dễ dàng.