因此我无法让我的游戏通行证工作。这是我的代码:
local TENROBUXGUI = script.Parent
local TextButton = TENROBUXGUI.TextButton
TextButton.MouseButton1Up:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit)
if player then
game:GetService("MarketplaceService"):PromptGamePassPurchase(player, 21187565)
end
end)
您使用
hit
的方式似乎与您使用 BasePart
事件发现 Touched
接触游戏世界中的另一部分的方式相同。然而,由于这是一个 GUI,它的工作方式并不相同。
根据 documentation,
MouseButton1Up
有两个数字参数,对应于用户在屏幕上单击/点击的确切 x 和 y 坐标。由于第一个参数对应于 x 坐标值,而不是游戏世界中玩家的模型,因此它返回 null。
因此,您要做的是引用
game.Players.LocalPlayer
来获取单击 GUI 的玩家的 Player
对象。
local TENROBUXGUI = script.Parent
local TextButton = TENROBUXGUI.TextButton
TextButton.MouseButton1Up:Connect(function()
local player = game.Players.LocalPlayer
if player then
game:GetService("MarketplaceService"):PromptGamePassPurchase(player, 21187565)
end
end)
本地玩家 = game.Players:GetPlayerFromCharacter(hit.Parent)