RemoteFunction
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
วัตถุ RemoteFunction ช่วยให้การสื่อสารแบบสองทางแบบเรียลไทม์ข้ามขอบเขต ไคลเอนต์-เซิร์ฟเวอร์คุณสามารถใช้มันเพื่อกำหนดฟังก์ชันการโทรกลับที่กําหนดเองและเรียกโดยตรงโดยการโทร RemoteFunction:InvokeClient() หรือ RemoteFunction:InvokeServer()รหัสที่เรียกฟังก์ชัน จะให้ผลจนกว่าจะได้รับคำตอบจากผู้รับ
เพื่อให้ทั้งเซิร์ฟเวอร์และไคลเอนต์สามารถเข้าถึงตัวอย่าง RemoteFunction อินสแตนซ์ต้องอยู่ในสถานที่ที่ทั้งสองฝ่ายสามารถมองเห็นได้ เช่น ReplicatedStorage แม้ว่าในบางกรณีจะเหมาะสมที่จะเก็บไว้ใน Workspace หรือภายใน Tool
หากผลลัพธ์เป็น ไม่ จำเป็น แนะนำให้คุณใช้ RemoteEvent แทน เนื่องจากการเรียกของมันเป็นเชิงเอกเทศและไม่จำเป็นต้องรอการตอบสนองเพื่อดำเนินการต่อดู กิจกรรมระยะไกลและการโทรกลับ สําหรับตัวอย่างโค้ดและรายละเอียดเพิ่มเติมเกี่ยวกับ RemoteFunction
ข้อควรระวังในการสตรีม
โปรดทราบว่าหากการเรียกใช้ RemoteFunction สร้างตัวอย่างบนเซิร์ฟเวอร์ จะไม่มีการรับประกันว่าจะมีอยู่บนไคลเอนต์เมื่อฟังก์ชันกลับมาเป็นสิ่งสำคัญอย่างยิ่งในสถานที่ที่การสตรีมตัวอย่าง เปิดใช้งาน และเมื่อตัวอย่างที่สร้างขึ้นมี หรือ เนื่องจากส่วนที่อยู่ไกลจากตัวละครของผู้เล่นอาจไม่ถูกสตรีมไปยังไคลเอนต์และโมเดลที่เป็น ขึ้นอยู่กับว่าส่วนของพวกเขาถูกสตรีมหรือไม่แม้ว่าโมเดลจะเป็น Persistent ก็อาจมีความล่าช้าระหว่างการสร้างโมเดลและเมื่อมันถูกส่งไปยังไคลเอนต์
ข้อจำกัดพารามิเตอร์
ประเภทของวัตถุ Roblox ใดๆ เช่น , หรืออื่นๆ สามารถส่งเป็นพารามิเตอร์เมื่อเรียกใช้ รวมทั้งประเภท Luau เช่นตัวเลข สตริง และบูลีเนียน แม้ว่าคุณควรสำรวจข้อจำกัด อย่างระมัดระวังก็ตาม
สรุป
วิธีการ
เรียก RemoteFunction ซึ่งจะเรียกการโทรกลับ OnClientInvoke ในที่สุด
เรียก RemoteFunction ซึ่งจะเรียกการโทรกลับ OnServerInvoke ในที่สุด
Callbacks
การเรียกคืนเมื่อ RemoteFunction ถูกเรียกใช้ด้วย InvokeClient()
การเรียกคืนเมื่อ RemoteFunction ถูกเรียกใช้ด้วย InvokeServer()
คุณสมบัติ
วิธีการ
InvokeClient
เรียก RemoteFunction ซึ่งจะเรียกการโทรกลับ OnClientInvoke ในที่สุดเนื่องจากวิธีนี้ใช้สื่อสารจากเซิร์ฟเวอร์ไปยังไคลเอนต์จะทำงานได้เฉพาะเมื่อใช้ใน Script
ประเภทของวัตถุ Roblox ใดๆ เช่น , หรืออื่นๆ สามารถส่งเป็นพารามิเตอร์ไปยัง เช่นเดียวกับประเภท Luau เช่นตัวเลข สตริง และบูลีเนียน แม้ว่าคุณควรสำรวจข้อจํากัด อย่างระมัดระวังก็ตาม
ดู กิจกรรมระยะไกลและการโทรกลับ สําหรับตัวอย่างโค้ดและรายละเอียดเพิ่มเติมเกี่ยวกับ RemoteFunction
คำเตือน
ในการปฏิบัติ เซิร์ฟเวอร์มักจะไม่เรียกใช้ไคลเอนต์บ่อยนัก เนื่องจากไคลเอนต์มักไม่มีข้อมูลที่เซิร์ฟเวอร์ไม่มี และการดำเนินการที่เฉพาะลูกค้าเท่านั้นที่สามารถดำเนินการได้ เช่น การแสดง GUI มักจะไม่ต้องการการโทรกลับดังนั้น RemoteEvent:FireClient() จึงแนะนำให้ใช้เป็นวิธีแบบไม่ซิงโครนิซที่ไม่จำเป็นต้องรอการตอบสนองเพื่อดำเนินการต่อ
หากคุณต้องการโทรไปยังไคลเอนต์จากเซิร์ฟเวอร์อย่างถูกต้อง โปรดทราบความเสี่ยงต่อไปนี้:
- หากไคลเอนต์โยนข้อผิดพลาด เซิร์ฟเวอร์ก็โยนข้อผิดพลาดเช่นกัน
- หากไคลเอนต์ตัดการเชื่อมต่อในขณะที่ถูกเรียกใช้ InvokeClient() จะโยนข้อผิดพลาด
- หากไคลเอนต์ไม่ส่งค่ากลับ เซิร์ฟเวอร์จะให้บริการตลอดไป
พารามิเตอร์
ค่าที่จะส่งไปยังการโทรกลับ OnClientInvoke
ส่งค่ากลับ
ค่าที่ส่งกลับจากการเรียกคืน OnClientInvoke
InvokeServer
เรียก RemoteFunction ซึ่งจะเรียกการโทรกลับ OnServerInvoke ในที่สุดเนื่องจากวิธีนี้ใช้สื่อสารจากไคลเอนต์ไปยังเซิร์ฟเวอร์ จะทำงานได้เฉพาะเมื่อใช้ใน LocalScript
หากผลลัพธ์ที่ส่งกลับไม่จำเป็น แนะนำให้ใช้ RemoteEvent:FireServer() แทนเนื่องจากการเรียกของมันเป็นเชิงเอกเทศและไม่จำเป็นต้องรอการตอบสนองเพื่อดำเนินการต่อ
ประเภทของวัตถุ Roblox ใดๆ เช่น , หรืออื่นๆ สามารถส่งเป็นพารามิเตอร์ไปยัง เช่นเดียวกับประเภท Luau เช่นตัวเลข สตริง และบูลีเนียน แม้ว่าคุณควรสำรวจข้อจํากัด อย่างระมัดระวังก็ตาม
ดู กิจกรรมระยะไกลและการโทรกลับ สําหรับตัวอย่างโค้ดและรายละเอียดเพิ่มเติมเกี่ยวกับ RemoteFunction
พารามิเตอร์
ค่าที่จะส่งไปยังการโทรกลับ OnServerInvoke
ส่งค่ากลับ
ค่าที่ส่งกลับจากการเรียกคืน OnServerInvoke
อีเวนต์
Callbacks
OnClientInvoke
คอลเลกชันนี้จะเรียกเมื่อ RemoteFunction ถูกเรียกใช้ด้วย InvokeClient()เมื่อฟังก์ชันผูกกลับมาแล้ว ค่าที่ส่งกลับจะถูกส่งกลับไปยังเซิร์ฟเวอร์ที่เรียก
ดู กิจกรรมระยะไกลและการโทรกลับ สําหรับตัวอย่างโค้ดและรายละเอียดเพิ่มเติมเกี่ยวกับ OnClientInvoke
พารามิเตอร์
พารามิเตอร์ที่ส่งผ่าน InvokeClient()
ส่งค่ากลับ
ค่าที่ส่งคืนโดยฟังก์ชัน callback
OnServerInvoke
คอลเลกชันนี้จะเรียกเมื่อ RemoteFunction ถูกเรียกใช้ด้วย InvokeServer()เมื่อฟังก์ชันผูกกลับมาแล้ว ค่าที่ส่งกลับจะถูกส่งกลับไปยังไคลเอนต์ที่เรียก
ดู กิจกรรมระยะไกลและการโทรกลับ สําหรับตัวอย่างโค้ดและรายละเอียดเพิ่มเติมเกี่ยวกับ OnServerInvoke
พารามิเตอร์
The Player ที่เกี่ยวข้องกับไคลเอนต์ที่การเรียก InvokeServer() เกิดจาก
พารามิเตอร์ที่ส่งผ่าน InvokeServer()
ส่งค่ากลับ
ค่าที่ส่งคืนโดยฟังก์ชัน callback