玩家邀请提示

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

除了增加您的玩家群的常见促销方法外,您可以在体验内直接实现 邀请提示 ,鼓励玩家邀请他们的朋友并增加共同经验游戏。

邀请提示系统具有以关注中/正在关注功能:

  • 动态邀请者 — 向玩家提示从选择列表中邀请多个朋友或邀请特定好友。
  • 发射数据 — 包括可选的 发射数据,可以在邀请的朋友加入时通过 Player:GetJoinData() 阅读。例子使用案例包括将受邀的朋友路由到坐标位置或为受邀者个性化加入体验。
  • 可定制文本 — 定制邀请提示消息和通知信息。例如,对玩家的邀请提示可能会阅读“邀请你的朋友加入冒险!”,邀请的朋好友通知消息可能会阅读“displayName希望你加入他们的冒险在experienceName!”。

您还可以使用 朋友邀请奖励系统 来跟踪和奖励邀请者和受邀者。

设置邀请选项

默认情况下,向玩家发出的邀请提示显示了具有 邀请 按钮的朋友菜单。要自定义快捷消信息,目标特定的朋好友,或在邀请中包含启动数据,你需要设置一个 ExperienceInviteOptions 对象,具有所需的属性。

属性类型描述
PromptMessage字符串例如,邀请发送玩家的邀请提示上显示的自定义文本,例如“邀请朋友加入冒险!”对于多人邀请提示,或“邀请这个朋友加入冒险!”对于特定朋友邀请提示。请注意,如果您的自定义邀请提示消息足够长,可以超出 UI 边界,它将不会显示。
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 作为 ExperienceInviteOptions 的参数。

  1. 导航到 创建者仪表板

  2. 徽章类似,通知字符串绑定到一个 特定体验 。找到该体验的缩略图并单击它。

  3. 在左栏中,在 参与 下,单击 通知

  4. 在中心区域,单击 创建通知字符串 按钮。

  5. 填写一个识别名称(仅向您可见)和自定义通知文本。请注意,你必须包含 experienceName 作为占位符来识别邀请的朋友体验的名称,你可以选择性地包含发送者的 DisplayName 通过 displayName 占位符。

    示例通知字符串:

    • displayName希望你在experienceName加入他们的冒险!
    • displayName刚刚清除了第六阶段的experienceName。你可以吗?
  6. 准备好后,单击 创建通知字符串 按钮。

  7. 在通知页面上,在通知表中,单击 按钮在 行动 栏中,然后选择 复制资产ID

  8. 在邀请提示的 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"

提示发起邀请

要提示发起邀请,您首先应该确定玩家 是否可以 发送邀请,因为能力可能会根据平台或玩家而异。一旦确认,您可以向玩家显示邀请提示。

  1. 调用 SocialService:CanSendGameInviteAsync() , 包裹在 pcall() 中,因为它是一种异步网络调用,可能会时不时失败。
  2. 如果邀请能力已确认,请使用第二个参数 SocialService:PromptGameInvite() 调用可选 邀请选项对象 作为第二个参数。

一旦提示,玩家将看到屏幕上的提示邀请多个朋友,或特定在 邀请选项对象 中定义的朋友。当玩家然后单击一个或多个朋友的 邀请 按钮时,这些朋友将收到包含发送者的 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

包含启动数据

要进一步提高体验中的合作或鼓励玩家邀请,您可以在邀请提示中包含 启动数据 ,对于场景如将邀请的朋友路由到坐标位置或为邀请者个性化加入体验有用。

  1. 提示邀请时,包括具有相关数据的ExperienceInviteOptions,例如发送者的Player.UserId,授予朋友加入体验时的徽章徽章或在加入时生成朋友的坐标位置。如果需要编译多个数据片段,请使用 JSONEncode() 编码数据。

    本地脚本 - 邀请多个朋友

    local HttpService = game:GetService("HttpService")
    local SocialService = game:GetService("SocialService")
    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    local 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 canSend
    end
    local canInvite = canSendGameInvite(player)
    if canInvite then
    SocialService:PromptGameInvite(player, inviteOptions)
    end
  2. 对于通过通知加入的朋友,检查服务器端上的发射数据通过 Player:GetJoinData() 。如果你将多个数据片段编码为 JSON 以便在邀请提示中使用,请记得使用 JSONDecode() 进行解码。

    脚本 - 使用邀请启动数据

    local HttpService = game:GetService("HttpService")
    local Players = game:GetService("Players")
    local ATTEMPT_LIMIT = 10
    local RETRY_DELAY = 1
    local function onPlayerAdded(player)
    local launchData
    for _ = 1, ATTEMPT_LIMIT do
    task.wait(RETRY_DELAY)
    local joinData = player:GetJoinData()
    if joinData.LaunchData ~= "" then
    launchData = joinData.LaunchData
    break
    end
    end
    if launchData then
    local data = HttpService:JSONDecode(launchData)
    print(data.senderUserID)
    print(data.spawnLocation)
    else
    warn("No launch data received!")
    end
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  3. 如果发射数据存在,你可以使用它来实现各种设计场景,包括:

    • 在发送者刚刚完成的挑战性障碍路线的开始时,生成收到的朋友,基于通过发射数据传递的坐标位置。
    • 检查 发送者 是否在现场景,根据其在发射数据中的Player.UserId,传送朋好友的角色靠近他们的角色。