Roblox 错误:MarketplaceService:PromptGamePassPurchase() 玩家应该是Player类型,但是是nil类型

我无法使我的Gamepass工作,因为此问题。这是我的代码:

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)
点赞
用户11970364
用户11970364

你似乎正以与在游戏世界中使用“Touched”事件接触另一个部件查找“BasePart”相同的方式使用hit。然而,由于这是一个GUI,它的工作方式不同。

根据文档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)
2021-08-15 14:45:04