除了常见的 提升玩家基础 方法外,您还可以在体验中直接实现 邀请提示 ,鼓励玩家邀请其朋友并提高共同体验游戏玩法。
邀请提示系统具有以关注中/正在关注功能:
- 动态邀请者 — 邀请玩家从选择列表中邀请多个朋友或邀请一个特定好友。
- 发射数据 — 包含可以通过 Class.Player:GetJoinData() 读取的可选发射数据。 当邀请的朋友加入时,例如使用例子包括将邀请的朋友路由到坐标位置或个性化加入体验。
- 可定制的文本 — 定制邀请提示和通知提信息。例如,玩家的邀请提示可以读取 “邀请您的朋友加入冒险!” 的话,邀请朋好友的通知消息可以读取 “显示名称要求您加入他们的冒险在 experienceName!”。
您还可以使用朋友邀请奖励系统来跟踪和奖励参与者。
设置邀请选项
默认情况下,玩家的邀请提示会显示一个菜单,其中包含 邀请 按钮。要自定义邀请消信息,您需要将特定的朋好友设置为目标,或将启动数据包含在邀请中。您需要设置一个 ExperienceInviteOptions 对象,以便配置所需的属性。
属性 | 类型 | 描述 |
---|---|---|
PromptMessage | 字符串 | 在邀请提示中显示玩家的自定义文本,例如“向您的朋友发送冒险”,或“向您的朋友发送冒险”,或“向您的朋友发送冒险”,或“向您的朋友发送冒险”,或“向您的朋友发送冒险”,或“向您的朋友发送冒险”,或“向您的朋友发送冒险”,或“向您的朋友发送冒险”,或“ |
InviteUser | 数 | Roblox UserId 的具体朋友邀请,如果未提供,玩家将被提示从朋友列表中选择。 |
InviteMessageId | 字符串 | 资产 ID 地图到一个 通知 资产输入。这个资产用于存储/本地化 邀请邀请 的自定义字符串。请参阅 设置通知选项 获取详细信息。 |
LaunchData | 字符串 | 用于在 Player:GetJoinData() 设置一个参数,当有朋友从邀请通知中加入时。最多 200 个字符。请参阅 包括发射数据 使用示例。 |
本地脚本 - 邀请多个朋友
local SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayer-- 使用自定义提示消信息邀请构建local inviteOptions = Instance.new("ExperienceInviteOptions")inviteOptions.PromptMessage = "Ask your friends to join the adventure!"
设置通知选项
默认情况下,朋友收到的邀请通知包含发送者的 DisplayName 、用户名和体验名称。要自定义该信息,您可以在 创建者仪表板 上创建一个 通知 资产,并将其资产 ID 作为 2>Class.ExperienceInviteOptions2> 的参数。
导航到创建者仪表板。
与徽章类似,通知字符串绑定到一个 特定体验 。找到该体验的缩略图,然后单击它。
在左侧栏中, under 涉及度 ,单击 通知 。
在中心区域,单击 创建一个通知字符串 按钮。
填写一个识别名称 (仅对您可见) 和自定义通知文本。请注意,您必须包含 playerName 作为邀请朋友的体验名称的默认值,并且您可以选择包含发件人的 DisplayName 通过显示器 displayName 。
示例通知字符串:
- displayName想要你加入他们的冒险在experienceName!
- displayName刚刚结束了第六个experienceName的阶段。你可以吗?
当准备好时,点击 创建通知字符串 按钮。
在通知页面,单击 ⋯ 按钮为通知,然后选择 复制资产ID 。
在ExperienceInviteOptions对象中,邀请提示的对象上,将资产 ID 作为值的 InviteMessageId 属性。
本地脚本 - 邀请多个朋友local SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayer-- 使用朋好友的用户ID邀请选项local inviteOptions = Instance.new("ExperienceInviteOptions")inviteOptions.InviteMessageId = "ef0e0790-e2e8-4441-9a32-93f3a5783bf1"
提示邀请
要提示邀请,您首先应该确定玩家是否可以发送邀请,因为能力可能会根据平台或玩家变化。一旦确认,您可以显示邀请提示给玩家。
- 调用 SocialService:CanSendGameInviteAsync() ,包装在一个 pcall() 因为它是一个异步网络调用,可能会时时发生故障。
- 如果邀请能力已确认,请使用 SocialService:PromptGameInvite() 作为第二个参数,并使用 邀请选项对象 作为第二个参数。
一旦提示,玩家会看到屏幕上的提示邀请多个朋友,或在邀请选项对象中定义的特定朋友。当玩家然后单击 邀请 按钮为一个或多个朋友时,这些朋友会收到包含发送者的 Class.Player.DisplayName|DisplayName</
本地脚本 - 邀请多个朋友
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 ,徽章的 ID 或奖励
本地脚本 - 邀请多个朋友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() 来解码它们。
脚本 - 使用邀请发射数据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("No launch data received!")endendPlayers.PlayerAdded:Connect(onPlayerAdded)如果发射数据存在,您可以使用它来实现各种设计场景,包括:
- 根据发送者通过发射数据传送的坐标位置生成一个挑战障碍赛的开始,
- 检查发件人是否在场场景上,根据发件人在发布数据中的 Class.Player.UserId 在场地上,并将朋好友的角色传送到他们的角色附近。