RemoteFunction
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
L'objet RemoteFunction facilite la communication synchronisée en deux sens à travers la frontière client-serveur.Vous pouvez l'utiliser pour définir une fonction de rappel personnalisée et l'invoquer manuellement en appelant RemoteFunction:InvokeClient() ou RemoteFunction:InvokeServer() .Le code invoquant la fonction produit jusqu'à ce qu'il reçoive une réponse du destinataire.
Pour que le serveur et les clients aient accès à une instance RemoteFunction , il doit être à un endroit où les deux parties peuvent la voir, comme ReplicatedStorage , bien que dans certains cas, il soit approprié de la stocker dans Workspace ou à l'intérieur d'un Tool .
Si le résultat est pas nécessaire, il est recommandé d'utiliser un RemoteEvent à la place, car son appel est asynchrone et n'a pas besoin d'attendre une réponse pour poursuivre l'exécution.Voir Événements et rappels à distance pour des échantillons de code et des détails supplémentaires sur RemoteFunction .
Précautions de streaming
Notez que si une invocation de RemoteFunction crée une instance sur le serveur, il n'y a aucune garantie qu'elle existe sur le client lorsque la fonction retourne.Ceci est particulièrement important dans les endroits où le streaming d'instance est activé et lorsque les instances créées sont BaseParts ou Models , car les parties qui sont loin du personnage du joueur peuvent ne pas être diffusées au client, et les modèles qui sont Atomic dépendent du fait que leurs parties sont diffusées.Même si un modèle est Persistent , il peut y avoir un certain délai entre la création du modèle et le moment où il est répliqué au client.
Limites des paramètres
Tout type d'objet Roblox tel qu'un Enum , Instance ou d'autres peut être passé en tant que paramètre lorsqu'un RemoteFunction est invoqué, ainsi que des types Luau tels que des nombres, des chaînes et des booléens, bien que vous deviez explorer soigneusement les limites .
Résumé
Méthodes
Invoque le RemoteFunction qui à son tour appelle le rappel OnClientInvoke.
Invoque le RemoteFunction qui à son tour appelle le rappel OnServerInvoke.
Rappels
Rappel lorsque le RemoteFunction est invoqué avec InvokeClient() .
Rappel lorsque le RemoteFunction est invoqué avec InvokeServer() .
Propriétés
Méthodes
InvokeClient
Invoque le RemoteFunction qui à son tour appelle le rappel OnClientInvoke.Puisque cette méthode est utilisée pour communiquer du serveur vers un client, elle ne fonctionnera que lorsqu'elle est utilisée dans un Script .
Tout type d'objet Roblox tel qu'un Enum , Instance ou d'autres peut être passé en tant que paramètre à InvokeClient() , ainsi que des types Luau tels que des nombres, des chaînes et des booléens, bien que vous deviez explorer soigneusement les limites .
Voir événements à distance et rappels pour des échantillons de code et des détails supplémentaires sur RemoteFunction .
Avertissement
En pratique, le serveur n'invite pas souvent le client, car les clients n'ont généralement pas d'informations que le serveur n'a pas, et les actions que seul un client peut prendre, telles que l'affichage d'une interface interface utilisateur graphique, n'ont généralement pas besoin d'un rappel.En tant que tel, RemoteEvent:FireClient() est recommandé comme méthode asynchrone qui n'a pas besoin d'attendre une réponse pour poursuivre l'exécution.
Si vous devez légitimement invoquer un client depuis le serveur, notez les risques suivants :
- Si le client lance une erreur, le serveur lance également l'erreur.
- Si le client se déconnecte pendant qu'il est invoqué, InvokeClient() lance une erreur.
- Si le client ne renvoie pas de valeur, le serveur produit à jamais.
Paramètres
Valeurs à transmettre au rappel OnClientInvoke .
Retours
Valeurs renvoyées par le rappel OnClientInvoke.
InvokeServer
Invoque le RemoteFunction qui à son tour appelle le rappel OnServerInvoke.Puisque cette méthode est utilisée pour communiquer d'un client au serveur, elle ne fonctionnera que lorsqu'elle est utilisée dans un LocalScript .
Si un résultat retourné n'est pas nécessaire, il est recommandé d'utiliser RemoteEvent:FireServer() à la place, car son appel est asynchrone et n'a pas besoin d'attendre une réponse pour poursuivre l'exécution.
Tout type d'objet Roblox tel qu'un Enum , Instance ou d'autres peut être passé en tant que paramètre à InvokeServer() , ainsi que des types Luau tels que des nombres, des chaînes et des booléens, bien que vous deviez explorer soigneusement les limites .
Voir événements à distance et rappels pour des échantillons de code et des détails supplémentaires sur RemoteFunction .
Paramètres
Valeurs à transmettre au rappel OnServerInvoke .
Retours
Valeurs renvoyées par le rappel OnServerInvoke.
Évènements
Rappels
OnClientInvoke
Ce rappel est appelé lorsque le RemoteFunction est invoqué avec InvokeClient() .Lorsque la fonction liée renvoie, les valeurs renvoyées sont renvoyées au serveur d'appel.
Voir événements à distance et rappels pour des échantillons de code et des détails supplémentaires sur OnClientInvoke .
Paramètres
Les paramètres envoyés via InvokeClient() .
Retours
Valeurs renvoyées par la fonction de rappel.
OnServerInvoke
Ce rappel est appelé lorsque le RemoteFunction est invoqué avec InvokeServer() .Lorsque la fonction liée renvoie, les valeurs renvoyées sont renvoyées au client d'appel.
Voir événements à distance et rappels pour des échantillons de code et des détails supplémentaires sur OnServerInvoke .
Paramètres
Le Player associé au client d'où provient l'appel InvokeServer().
Les paramètres envoyés via InvokeServer() .
Retours
Valeurs renvoyées par la fonction de rappel.