Roblox - 试图让 InvokeClient 远程功能正常工作

Posted

技术标签:

【中文标题】Roblox - 试图让 InvokeClient 远程功能正常工作【英文标题】:Roblox - Trying to get InvokeClient Remote Function Working 【发布时间】:2016-06-18 23:10:20 【问题描述】:

在我的名为 MainGameScript 的服务器脚本中,我有这个代码块:

local myRemoteFunction = Instance.new("RemoteFunction")
myRemoteFunction.Parent = game.Workspace
myRemoteFunction.Name = "GetBuildInfo"

game.Players.PlayerAdded:connect(function(player)
    print("[MainGameScript] added player") 

    for i,v in pairs(Regions) do
        if (v.Value == 0) then
            Regions[i].Value = player.UserId
            break
        end
    end    

    local success, result = pcall(function() return myRemoteFunction:InvokeClient(player) end)
    if success then
       print(result)
    else
        print("Error calling RemoteFunction GetBuildInfo")
    end

结束)

我在 game.Workspace 中有一个名为 LocalBuildScript 的 LocalScript,其中包含:

function game.workspace.GetBuildInfo.OnClientInvoke()
    print("[GetBuildInfo] will send back local build info")
    return "this will be returned to the server caller script"
end

永远不会调用 GetBuildInfo 函数。我在调用函数中添加了一些调试打印行,并且该进程似乎在它使用 pcall 的时候死掉了......这几乎是 Roblox Wiki 中的远程函数客户端调用示例,不知道为什么它不工作并且我希望这里有人有使用 InvokeClient 脚本的经验。

谢谢, 安迪

【问题讨论】:

【参考方案1】:

它没有运行的原因是因为RemoteFunctions 引用的LocalScripts 预计会在其中某处的Player 实例内。我相当肯定是这种情况,因为我已经实现了一个类似的测试系统,但我将 LocalScript 保存在 Player 实例中。

【讨论】:

奇怪,我最初将它放在 PlayerScripts 中的 MainLocalScript 中,但它不起作用,但我从不同的脚本触发 InvokeClient,所以这可能是问题所在。您的解决方案有效,谢谢。 LocalScripts 仅在非常特定的位置运行。如果它们是玩家的后代,它们将运行,但它们也可以在 Tool 内部或 ReplicatedFirst 内部运行。完整列表可在 wiki 页面上找到:wiki.roblox.com/index.php?title=API:Class/LocalScript

以上是关于Roblox - 试图让 InvokeClient 远程功能正常工作的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Roblox 中打开和关闭 gui?

我试图通过监视脚本的所有子部分来让“叶子”在 Roblox 游戏中产生沙沙声

Roblox:我怎样才能让这个脚本正常工作?

如何让 Roblox 脚本搜索玩家的背包

你如何让roblox中的动画不重叠

如何让 Roblox 上的玩家生成为不同的对象?