นอกจากวิธีการ โปรโมท ที่ใช้ทั่ว ๆ ไปเพื่อเพิ่มฐานผู้เล่นแล้ว คุณยังสามารถใช้ การเชิญผู้เล่น โดยตรงภายในเกมของคุณ เพื่อกระตุ้นให้ผู้เล่นเชิญเพื่อน ๆ ของพวกเขาและเพิ่มการเล่นร่วมกัน
ระบบการเชิญประกอบด้วยคุณสมบัติดังต่อไปนี้:
- ผู้ได้รับเชิญแบบไดนามิก — เชิญผู้เล่นให้เชิญเพื่อนหลายคนจากรายการที่เลือก หรือเชิญเพื่อนเฉพาะคนเดียว
- ข้อมูลการเริ่มต้น — รวมข้อมูลการเริ่มต้น ด้วย ที่สามารถอ่านได้ผ่าน Player:GetJoinData() เมื่อเพื่อนที่ถูกเชิญเข้ามา ตัวอย่างการใช้งานรวมถึงการนำเพื่อนที่ถูกเชิญไปยังตำแหน่งที่ประสาท หรือการปรับแต่งเกมที่เข้าร่วมให้กับผู้ที่ถูกเชิญ
- ข้อความที่ปรับแต่งได้ — ปรับแต่งข้อความ การเชิญ และข้อความ การแจ้งเตือน ตัวอย่างเช่น ข้อความการเชิญสำหรับผู้เล่นอาจอ่านว่า "ขอให้เพื่อนของคุณมาร่วมการผจญภัย!" และข้อความการแจ้งเตือนสำหรับเพื่อนที่ถูกเชิญอาจอ่านว่า "{displayName} ต้องการให้คุณมาร่วมการผจญภัยใน {experienceName}!"
คุณยังสามารถติดตามและตอบแทนผู้เชิญและผู้ที่ถูกเชิญได้ด้วย ระบบตอบแทนการเชิญเพื่อน.

ตั้งค่าตัวเลือกการเชิญ
ตามค่าเริ่มต้น การเชิญผู้เล่นจะแสดงเมนูของเพื่อน ๆ ของพวกเขาพร้อมปุ่ม เชิญ เพื่อปรับแต่งข้อความการเชิญ เป้าหมายเพื่อนเฉพาะ หรือรวมข้อมูลการเริ่มต้นในคำเชิญ คุณจะต้องตั้งค่าอ็อบเจ็กต์ ExperienceInviteOptions ด้วยคุณสมบัติที่ต้องการ
| คุณสมบัติ | ประเภท | คำอธิบาย |
|---|---|---|
| PromptMessage | string | ข้อความที่กำหนดเองที่แสดงในการเชิญสำหรับผู้เล่นที่ส่ง เช่น "ขอให้เพื่อนของคุณมาร่วมการผจญภัย!" สำหรับการเชิญหลายคน หรือ "เชิญเพื่อนคนนี้มาร่วมการผจญภัย!" สำหรับการเชิญเพื่อนเฉพาะ โปรดทราบว่าหากข้อความการเชิญที่กำหนดเองของคุณยาวพอที่จะเกินขอบเขตของ UI จะไม่ถูกแสดง |
| InviteUser | number | หมายเลข UserId ของเพื่อนเฉพาะที่จะเชิญ; หากไม่ได้ระบุ ผู้เล่นจะถูก prompted ให้เลือกจากรายการเพื่อน |
| InviteMessageId | string | Asset ID ที่แมพไปยังประเภท การแจ้งเตือน Asset. Asset นี้ใช้เก็บ/ท้องถิ่นข้อความที่กำหนดเองสำหรับการแจ้งเตือนเชิญที่เพื่อน ๆ จะได้รับ ดู การตั้งค่าตัวเลือกการแจ้งเตือน สำหรับรายละเอียด |
| LaunchData | string | ใช้เพื่อกำหนดพารามิเตอร์ใน Player:GetJoinData() เมื่อเพื่อนเข้ามาจากการแจ้งเตือนเชิญ สูงสุด 200 ตัวอักษร ดู รวมข้อมูลการเริ่มต้น สำหรับตัวอย่างการใช้งาน |
LocalScript - เชิญเพื่อนหลายคนlocal SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayer-- สร้างตัวเลือกการเชิญด้วยข้อความเชิญที่กำหนดเองlocal inviteOptions = Instance.new("ExperienceInviteOptions")inviteOptions.PromptMessage = "ขอให้เพื่อนของคุณมาร่วมการผจญภัย!"
ตั้งค่าตัวเลือกการแจ้งเตือน
ตามค่าเริ่มต้น การแจ้งเตือนการเชิญที่เพื่อน ๆ จะได้รับประกอบด้วย DisplayName ของผู้ส่ง ชื่อผู้ใช้ และชื่อเกม เพื่อปรับแต่งข้อความ คุณสามารถสร้าง การแจ้งเตือน Asset ใน แดชบอร์ดผู้สร้าง และรวม Asset ID ของมันเป็นพารามิเตอร์ของ ExperienceInviteOptions.
ไปที่ แดชบอร์ดผู้สร้าง.
คล้ายกับ ตรา สายการแจ้งเตือนผูกติดอยู่กับ เกมเฉพาะ ค้นหารูปภาพของเกมนั้นและคลิกที่มัน
ในคอลัมน์ซ้ายภายใต้ การมีส่วนร่วม คลิก การแจ้งเตือน
ในพื้นที่กลาง คลิกปุ่ม สร้างสตริงการแจ้งเตือน
กรอกชื่อระบุตัว (เห็นได้เฉพาะคุณ) และข้อความการแจ้งเตือนที่กำหนดเอง โปรดทราบว่าคุณจะต้องรวม {experienceName} เป็นตัวแทนเพื่อระบุชื่อเกมสำหรับเพื่อนที่ถูกเชิญ และคุณสามารถรวม DisplayName ของผู้ส่งผ่านตัวแทน {displayName} ได้ตามความต้องการ
ตัวอย่างสายการแจ้งเตือน:
- {displayName} ต้องการให้คุณมาร่วมการผจญภัยของพวกเขาใน {experienceName}!
- {displayName} เพิ่งเคลียร์ด่านที่หกของ {experienceName}. คุณสามารถทำได้ไหม?
เมื่อพร้อมแล้ว คลิกปุ่ม สร้างสตริงการแจ้งเตือน
ในหน้าแจ้งเตือน ในตารางของการแจ้งเตือน คลิกปุ่ม ⋯ ในคอลัมน์ การกระทำ และเลือก คัดลอก Asset ID
ในอ็อบเจ็กต์ ExperienceInviteOptions สำหรับการเชิญ ให้วาง Asset ID เป็นค่าในคุณสมบัติ InviteMessageId.
LocalScript - เชิญเพื่อนหลายคนlocal SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayer-- สร้างตัวเลือกการเชิญด้วยหมายเลขผู้ใช้ของเพื่อนlocal inviteOptions = Instance.new("ExperienceInviteOptions")inviteOptions.InviteMessageId = "ef0e0790-e2e8-4441-9a32-93f3a5783bf1"
เสนอการเชิญ
เพื่อเสนอการเชิญ คุณควรกำหนดก่อนว่าผู้เล่น สามารถ ส่งการเชิญได้หรือไม่ เนื่องจากความสามารถอาจแตกต่างกันไปขึ้นอยู่กับแพลตฟอร์มหรือผู้เล่น เมื่อตรวจสอบแล้ว คุณสามารถแสดงข้อความเชิญให้กับผู้เล่น
- เรียกใช้ SocialService:CanSendGameInviteAsync(), อยู่ใน pcall() เนื่องจากเป็นการเรียกเครือข่ายแบบอะซิงโครนัสที่อาจล้มเหลวบ้าง
- หากการยืนยันความสามารถในการเชิญสำเร็จแล้ว ก็ให้เรียกใช้ SocialService:PromptGameInvite() พร้อมกับอ็อบเจ็กต์ ตัวเลือกการเชิญ เป็นอาร์กิวเมนต์ที่สอง
เมื่อเสนอแล้ว ผู้เล่นจะเห็นข้อความเชิญบนหน้าจอเพื่อเชิญเพื่อนหลายคน หรือเพื่อนเฉพาะที่กำหนดใน อ็อบเจ็กต์ตัวเลือกการเชิญ. เมื่ผู้เล่นคลิกปุ่ม เชิญ สำหรับเพื่อนคนใดคนหนึ่งหรือมากกว่านั้น เพื่อนเหล่านั้นจะได้รับการแจ้งเตือนที่มี DisplayName ของผู้ส่ง ชื่อผู้ใช้ และชื่อประสบการณ์ การแจ้งเตือนอาจถูกปรับแต่งเพิ่มเติมตามที่อธิบายใน ตั้งค่าตัวเลือกการแจ้งเตือน.
LocalScript - เชิญเพื่อนหลายคน
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- ฟังก์ชันเพื่อตรวจสอบว่าผู้เล่นสามารถส่งการเชิญได้หรือไม่
local function canSendGameInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendGameInviteAsync(sendingPlayer)
end)
return success and canSend
end
local canInvite = canSendGameInvite(player)
if canInvite then
SocialService:PromptGameInvite(player)
end
รวมข้อมูลการเริ่มต้น
เพื่อปรับปรุงความร่วมมือในเกมหรือเพื่อจูงใจการเชิญผู้เล่น คุณสามารถรวม ข้อมูลการเริ่มต้น ในการเชิญได้ ซึ่งมีประโยชน์ในกรณีเช่นการนำเพื่อนที่ถูกเชิญไปยังตำแหน่งที่ประสาทหรือปรับแต่งเกมที่เข้าร่วมให้กับผู้ที่ถูกเชิญ
เมื่อ เสนอการเชิญ, รวมอ็อบเจ็กต์ ExperienceInviteOptions ที่มีข้อมูลที่เกี่ยวข้องที่จะถูกนำไปใช้เมื่อเพื่อนเข้ามาในเกม ตัวอย่างเช่นหมายเลข Player.UserId ของผู้ส่ง หมายเลขของ ตรา ที่จะมอบให้กับเพื่อนเมื่อเขาเข้ามา หรือสถานที่เรือเกิดให้เพื่อน ถ้าคุณต้องการสร้างข้อมูลหลายชิ้น ให้เข้ารหัสข้อมูลโดยใช้ JSONEncode().
LocalScript - เชิญเพื่อนหลายคนlocal HttpService = game:GetService("HttpService")local SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal data = {senderUserID = player.UserId,spawnLocation = {12, 48, 205.5}}local launchData = HttpService:JSONEncode(data)-- สร้างตัวเลือกการเชิญด้วยข้อมูลการเริ่มต้นlocal inviteOptions = Instance.new("ExperienceInviteOptions")inviteOptions.LaunchData = launchData-- ฟังก์ชันเพื่อตรวจสอบว่าผู้เล่นสามารถส่งการเชิญได้หรือไม่local function canSendGameInvite(sendingPlayer)local success, canSend = pcall(function()return SocialService:CanSendGameInviteAsync(sendingPlayer)end)return success and canSendendlocal canInvite = canSendGameInvite(player)if canInvite thenSocialService:PromptGameInvite(player, inviteOptions)endสำหรับเพื่อนที่เข้ามาผ่านการแจ้งเตือน ตรวจสอบข้อมูลการเริ่มต้นจากฝั่งเซิร์ฟเวอร์ผ่าน Player:GetJoinData(). หากคุณเข้ารหัสข้อมูลหลายชิ้นเป็น JSON สำหรับการเชิญ โปรดจำไว้ว่าให้ถอดรหัสข้อมูลด้วย JSONDecode().
Script - การใช้ข้อมูลการเชิญlocal HttpService = game:GetService("HttpService")local Players = game:GetService("Players")local ATTEMPT_LIMIT = 10local RETRY_DELAY = 1local function onPlayerAdded(player)local launchDatafor _ = 1, ATTEMPT_LIMIT dotask.wait(RETRY_DELAY)local joinData = player:GetJoinData()if joinData.LaunchData ~= "" thenlaunchData = joinData.LaunchDatabreakendendif launchData thenlocal data = HttpService:JSONDecode(launchData)print(data.senderUserID)print(data.spawnLocation)elsewarn("ไม่พบข้อมูลการเริ่มต้น!")endendPlayers.PlayerAdded:Connect(onPlayerAdded)หากข้อมูลการเริ่มต้นมีอยู่ คุณสามารถใช้มันได้ในหลากหลายแบบในแนวการออกแบบ เช่น:
- สปอนเพื่อนที่เข้ามาที่จุดเริ่มต้นของอุปสรรคที่ท้าทายซึ่งผู้ส่งเพิ่งผ่าน โดยอิงจากตำแหน่งที่ระบุในข้อมูลเริ่มต้น
- ตรวจสอบว่า ผู้ส่ง อยู่ในที่นั้น โดยดูจาก Player.UserId ของพวกเขาในข้อมูลการเริ่มต้น และเทเลพอร์ตตัวละครของเพื่อนเข้ามาใกล้ตัวละครของพวกเขา