远程函数 对象可以促进客户端-服务器边界上的同步、双向通信。您可以使用它来定义自定义回调函数,并通过调用 RemoteFunction:InvokeClient() 或 RemoteFunction:InvokeServer() 手动调用它。调用函数 的代码直到收到收件人的回复为止 为了让服务器和客户端都能访问 RemoteFunction 实例,必须在一个位置,两者都可以看到它,例如 ReplicatedStorage ,虽然在某些情况下,将其存储在 Workspace 或内部的 Tool 中也是合适的。
如果结果是 不需要 ,建议您使用 RemoteEvent ,因为它的调用是异步的,不需要等待响应继续执行。请参阅远程事件和回调获取代码样例和RemoteFunction。
流媒体注意事项
请注意,如果调用的 RemoteFunction 在服务器上创建了实例,在函数返回时,客户端上是否存在该实例没有保证。这在启用实例 流媒体 的地方特别重要,当创建的实例是 或 时,由于远离玩家角色的部分可能不会被传送到客户端,依赖于部分是否被传送的模型可能会依赖于部分是否被传送。即使模型是 Persistent ,在模型创建和复制到客户端之间可能存在一些延迟。
参数限制
任何类型的 Roblox 对象,例如 Enum , Instance , 或其他对象,在调用 RemoteFunction 时都可以作为参数传递,以及 Luau 类型,例如数字、字符串和布林,虽然你应该仔细探索 限制 。
概要
方法
调用 RemoteFunction ,而后调用 OnClientInvoke 回调。
调用 RemoteFunction ,而后调用 OnServerInvoke 回调。
回调
当 RemoteFunction 被调用与 InvokeClient() 时,回调。
当 RemoteFunction 被调用与 InvokeServer() 时,回调。
属性
方法
InvokeClient
调用 RemoteFunction ,而后调用 OnClientInvoke 回调。由于此方法用于从服务器到客户端通信,只能在 Script 中使用。
任何类型的 Roblox 对象,例如 Enum , Instance , 或其他对象,都可以作为参数传递到 InvokeClient() , 以及 Luau 类型,例如数字、字符串和布林,虽然你应该仔细探索 限制 。
请参阅远程事件和回调获取代码样例和RemoteFunction。
警告
在实践中,服务器通常不会调用客户端,因为客户端通常没有服务器没有的信息,只有客户端才能采取的行动,例如显示 GUI,通常不需要回调。因此,RemoteEvent:FireClient() 建议作为一个异步方法,不需要等待响应继续执行。
如果你合法需要从服务器调用客户端,请注意以下风险:
- 如果客户端抛出错误,服务器也会抛出错误。
- 如果客户端在被调用时断开连接,InvokeClient() 将抛出错误。
- 如果客户端没有返回值,服务器永远不会返回。
参数
值传递到 OnClientInvoke 回调。
返回
从 OnClientInvoke 回调中返回的值。
InvokeServer
调用 RemoteFunction ,而后调用 OnServerInvoke 回调。由于此方法用于从客户端向服务器通信,只能在 LocalScript 中使用。
如果返回的结果不需要,建议使用 RemoteEvent:FireServer() ,因为其调用是异步的,不需要等待响应继续执行。
任何类型的 Roblox 对象,例如 Enum , Instance , 或其他对象,都可以作为参数传递到 InvokeServer() , 以及 Luau 类型,例如数字、字符串和布林,虽然你应该仔细探索 限制 。
请参阅远程事件和回调获取代码样例和RemoteFunction。
参数
值传递到 OnServerInvoke 回调。
返回
从 OnServerInvoke 回调中返回的值。
活动
回调
OnClientInvoke
此回调在 RemoteFunction 被调用时调用,当 InvokeClient() 被调用时。当绑定函数返回时,返回的值被发送回调用服务器。
请参阅远程事件和回调获取代码样例和OnClientInvoke。
参数
通过 InvokeClient() 发送的参数。
返回
由回调函数返回的值。
OnServerInvoke
此回调在 RemoteFunction 被调用时调用,当 InvokeServer() 被调用时。当绑定函数返回时,返回的值被发送回调用客户端。
请参阅远程事件和回调获取代码样例和OnServerInvoke。
参数
与客户端相关的 Player 与来自 InvokeServer() 的调用源相关。
通过 InvokeServer() 发送的参数。
返回
由回调函数返回的值。