玩家邀請提示

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

除了常見的 促銷 方法為增加您的玩家基地外,您可以在您的體驗中直接實現 邀請提示 ,勵勃玩家邀請其朋友並提升共同體驗遊玩。

邀請提示系統包括以追蹤中功能:

  • 動態邀請人 — 提示玩家邀請多個朋友從選擇列表中,或邀請一個特定好友。
  • 發射資料 — 包含可以通過 Class.Player:GetJoinData() 閱取時,當邀請朋友加入時,包括可選 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 作為 1> Class.ExperienceInviteOptions1>

  1. 導航到創作者控制板

  2. 與徽章相似,通知字串是綁定在 特定體驗 裡。找到該體驗的預覽圖片並點擊它。

  3. 在左柱中,在 參與度 下,按一下 通知

  4. 在中央區域,按一下 創建通知字串 按鈕。

  5. 填寫一個識別名稱 (只對您可見) 和自訂通知文字。 注意您必須包含 playerName 作為標準化名稱,並且可以選擇發件人的 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. Call SocialService:CanSendGameInviteAsync() , 包含在 pcall() 中,因為它是一個可以時常發生故障的網路呼叫。
  2. 如果邀請能力已確認,請使用 SocialService:PromptGameInvite() ,作為第二個引數項 邀請選項

一旦提示,玩家會看到在畫面上的提示邀請多個朋友,或在 邀請選項對象 中定義的特定朋友。當玩家然後按一下 邀請 按鈕為一個或多個朋友時,這些朋友會收到一個包含發件人的 <

本地指令碼 - 邀請多個朋友

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 、徵章的 ID 或

    本地指令碼 - 邀請多個朋友

    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() 。如果您在邀請提示中輸入了多個資料項目,記得使用 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. 如果發射資料存在,您可以使用它來處理各種設計場景,包括:

    • 在發件發送後不到幾分鐘的時間點,在挑戰性的障礙賽路線中生成一位來自未來的朋友,並基於發射資料傳輸的坐標位置。
    • 檢查發件人是否在該位空間,並且根據發射資料中的 Class.Player.UserId 在位置上傳送,並將朋好友的角色傳送到位置附近。