RemoteFunction
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
El objeto RemoteFunction facilita la comunicación sincronizada de ida y vuelta a través de la frontera cliente-servidor.Puedes usarlo para definir una función de llamada personalizada y invocarla manualmente llamando RemoteFunction:InvokeClient() o RemoteFunction:InvokeServer() .El código que invoca la función produce hasta que recibe una respuesta del destinatario.
Para que tanto el servidor como los clientes accedan a una instancia RemoteFunction , debe estar en un lugar donde ambas partes puedan verla, como ReplicatedStorage , aunque en algunos casos es apropiado almacenarla en Workspace o dentro de un Tool .
Si el resultado es no necesario, se recomienda que uses un RemoteEvent en su lugar, ya que su llamada es asincrónica y no necesita esperar a que una respuesta continúe la ejecución.Vea eventos remotos y llamadas de devolución para muestras de código y más detalles sobre RemoteFunction .
Precauciones de transmisión
Tenga en cuenta que si un invocado RemoteFunction crea una instancia en el servidor, no hay garantía de que exista en el cliente cuando la función regrese.Esto es particularmente importante en lugares donde el streaming de instancias está habilitado y cuando las instancias creadas son BaseParts o Models , ya que las partes que están lejos del personaje del jugador pueden no ser transmitidas al cliente, y los modelos que son Atomic dependen de si sus partes se transmiten.Incluso si un modelo es Persistent , puede haber algún retraso entre la creación del modelo y cuando se replica al cliente.
Limitaciones de parámetros
Cualquier tipo de objeto de Roblox como un Enum , Instance o otros se puede pasar como parámetro cuando se invoque un RemoteFunction , así como tipos de Luau como números, cadenas y booleanos, aunque deberías explorar cuidadosamente las limitaciones de .
Resumen
Métodos
Invoca el RemoteFunction que a su vez llama al llamado de devolución OnClientInvoke.
Invoca el RemoteFunction que a su vez llama al llamado de devolución OnServerInvoke.
Llamadas
Devolución de llamada para cuando se invoque el RemoteFunction con InvokeClient() .
Devolución de llamada para cuando se invoque el RemoteFunction con InvokeServer() .
Propiedades
Métodos
InvokeClient
Invoca el RemoteFunction que a su vez llama al llamado de devolución OnClientInvoke.Dado que este método se usa para comunicarse desde el servidor a un cliente, solo funcionará cuando se use en un Script .
Cualquier tipo de objeto de Roblox como un , , o otros se pueden pasar como parámetro a , así como tipos Luau como números, cadenas y booleanos, aunque deberías explorar cuidadosamente las limitaciones de .
Vea eventos remotos y llamadas de devolución para muestras de código y más detalles sobre RemoteFunction .
Atención/advertencia
En la práctica, el servidor no invoca con frecuencia al cliente, ya que los clientes no suelen tener información que el servidor no tenga y acciones que solo un cliente puede tomar, como mostrar una interfaz Interfaz gráfica (o GUI), por lo general no requieren una llamada de devolución.Como tal, RemoteEvent:FireClient() se recomienda como un método asíncrono que no necesita esperar a que una respuesta continúe la ejecución.
Si necesitas invocar legítimamente a un cliente desde el servidor, ten en cuenta los siguientes riesgos:
- Si el cliente lanza un error, el servidor también lanza el error.
- Si el cliente se desconecta mientras se invoca, InvokeClient() lanza un error.
- Si el cliente no devuelve un valor, el servidor se rinde para siempre.
Parámetros
Valores para pasar al devolución de llamadade llamada OnClientInvoke.
Devuelve
Valores devueltos desde la llamada de devolución OnClientInvoke .
InvokeServer
Invoca el RemoteFunction que a su vez llama al llamado de devolución OnServerInvoke.Dado que este método se usa para comunicarse desde un cliente al servidor, solo funcionará cuando se use en un LocalScript .
Si un resultado devuelto no es necesario, se recomienda usar RemoteEvent:FireServer() en su lugar, ya que su llamada es asincrónica y no necesita esperar a que una respuesta continúe la ejecución.
Cualquier tipo de objeto de Roblox como un , , o otros se pueden pasar como parámetro a , así como tipos Luau como números, cadenas y booleanos, aunque deberías explorar cuidadosamente las limitaciones de .
Vea eventos remotos y llamadas de devolución para muestras de código y más detalles sobre RemoteFunction .
Parámetros
Valores para pasar al devolución de llamadade llamada OnServerInvoke.
Devuelve
Valores devueltos desde la llamada de devolución OnServerInvoke .
Eventos
Llamadas
OnClientInvoke
Esta llamada de devolución se realiza cuando se invoca el RemoteFunction con InvokeClient() .Cuando la función vinculada regresa, los valores devueltos se envían de vuelta al servidor de llamada.
Vea eventos remotos y llamadas de devolución para muestras de código y más detalles sobre OnClientInvoke .
Parámetros
Los parámetros enviados a través de InvokeClient() .
Devuelve
Valores devueltos por la función de llamada de devolución.
OnServerInvoke
Esta llamada de devolución se realiza cuando se invoca el RemoteFunction con InvokeServer() .Cuando la función vinculada regresa, los valores devueltos se envían de vuelta al cliente llamador.
Vea eventos remotos y llamadas de devolución para muestras de código y más detalles sobre OnServerInvoke .
Parámetros
El Player asociado con el cliente de donde proviene la llamada InvokeServer().
Los parámetros enviados a través de InvokeServer() .
Devuelve
Valores devueltos por la función de llamada de devolución.