玩家邀請提示

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

除了增加玩家群的常見促銷方法外,您還可以在體驗內直接實現 邀請提示 ,鼓勵玩家邀請朋友並增加共同經驗游遊玩。

邀請提示系統具有以追蹤中功能:

  • 動態邀請者 — 提示玩家從選擇列表中邀請多名好友,或邀請一名特定好友。
  • 啟動資料 — 包括可選擇的 啟動資料,可以在邀請的朋友加入時通過 Player:GetJoinData() 閱讀。範例使用案例包括將受邀的朋友導向到坐標位置或為受邀者個人化加入體驗。
  • 可自訂文字 — 自訂 邀請提示 訊息和 通知訊息。例如,對玩家的邀請提示可能會讀取「邀請你的朋友加入冒險!」,邀請朋好友的通知訊息可能會讀取「displayName希望你加入他們的冒險在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包含為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 來傳送朋好友的角色靠近他們的角色。