プレイヤーベースを拡大するためのコモンな プロモーション メソッドに加えて、エクスペリエンス内で 招待プロンプト を直接実装し、プレイヤーが友達を招待し、コーエクスペリエンスゲームプレイを促進することができます。
招待プロンプトシステムには、フォロー中の機能があります:
- ダイナミックな招待者 — プレイヤーを選択リストから複数の友達を招待するか、特定の友達を招待するように促します。
- データを発売する — 招待された友達が参加するときに読み込むオプションの データを発売する を含める。 例の使用ケースは、招待された友達をコーディネート場所に移動するか、参加体験をパーソナライズするために Player:GetJoinData() にあります。
- カスタマイズ可能なテキスト — 招待プロンプトメッセージと通知プロンプトメッセージをカスタマイズします。たとえば、プレイヤーの招待プロンプトメッセージは「あなたの友達を冒アドベンチャーに招待する」と読むことがあり、招待プロンプトメッセージの読み取りメッセージは「
あなたはまた、友達の招待報酬システム を使用して招待者と報酬を追跡し、報酬を報酬で報酬できます。
招待オプションを設定
デフォルトでは、プレイヤーのための招待プロンプトは、 招待 ボタンで友達のメニューを表示します。プロンプトメッセージをカスタマイズするには、特定の友達をターゲットにするか、招待にランチャーデータを含める必要があります。ExperienceInviteOptions オブジェクトを設定する必要があります。
プロパティ | タイプ | 説明 |
---|---|---|
PromptMessage | 文字列 | 送信プレイヤーの招待プロンプトに表示されるカスタムテキスト、たとえば "Ask your friends to join the adventure!" のマルチ友達招待プロンプト、または "Invite this friend to join the adventure!" の特定の友達招待プロンプト。注意して、カスタム招待プロンプトメッセージが UI の境界を超える長さになると、表示されません。 |
InviteUser | 番号 | 特定の友達を招待する Roblox UserId のロブロックス;提供されていない場合、プレイヤーはフレンドリストから選択するように促されます。 |
InviteMessageId | 文字列 | 友達が受信する招待通知のタイプにマップするアセット I入力 です。このアセットは、友達が受信する招待通知のタイプにカスタムストリングを保存/ローカライズするために使用されます。詳細は、「<a href=\"#NotificationOptions\">設定通知オプション</a>」を参照してください。 |
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 、ユーザーユーザーネーム、およびエクスペリエンス名が含まれています。メッセージをカスタマイズするには、クリエイターダッシュボード の Notification アセットを作成し、その
ナビゲート to the クリエイターダッシュボード。
バッジと同様、通知ストリングは 特定のエクスペリエンス に結び付けられています。そのエクスペリエンスのサムネイルを見つけて、クリックします。
左の列で、 エンゲージメント の下で、 通知 をクリックします。
中央の領域で、 通知ストリングを作成する ボタンをクリックします。
識別子名 (あなたにしか見えない) とカスタム通知テキストを入力します。注意、expName を入力する必要があります。DisplayName をオプションで入力することもできます。显示名称 のプレースホルダーを通じて、2>playerName2> をオプ
通知文字列の例:
- displayName は、あなたが experienceName で冒険に参加することを望んでいます!
- displayName は experienceName の第六ステージをクリアしました。できますか?
準備ができたら、 ボタンをクリックして通知文字列を作成します 。
通知ページで、通知ボタンをクリックし、⋯ ボタンで通知を選択し、アセット ID をコピー を選択します。
招待プロンプトの ExperienceInviteOptions オブジェクトに、InviteMessageId プロパティの値としてアセット ID を入力します。
ローカルスクリプト - 複数の友達を招待する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"
招待を促す
招待状をプレイヤーが受信できるかどうかを最初に確認する必要があります。これはプラットフォームまたはプレイヤーによって機能が異なるため、能力は変更される可能性があります。確認済みの場合、招待状をプレイヤーに表示できます。
- Class.SocialService:CanSendGameInviteAsync() を呼び出します。pcall() は、時々失敗する可能性のある非同期ネットワークコールです。
- 招待能力が確認された場合、SocialService:PromptGameInvite() を呼び出し、招待オプションオブジェクト をオプションの第 2 引数として呼び出します。
プレイヤーが招待されると、画面上のプロンプトに表示され、招待オプションオブジェクト に定義された特定の友達を招待するようになります。プレイヤーが招待ボタンをクリックすると、送信者の Class.Player
ローカルスクリプト - 複数の友達を招待する
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
発売データを含む
さらにエクスペリエンス中のコラボレーションを改善するか、プレイヤーの招待を促進するために、 ランチャーデータ を招待プロンプトに含めることができます。これは、招待された友達をコーディネート場所に移動するなどのシナリオの場合、または参加者の参加体験を個人化するためのパーソナライズされた体験の場合に
招待状を入手したとき、友達がエクスペリエンスに参加するときに使用する関連するデータを含む Class.ExperienceInviteOptions オブジェクトを含めること。たとえば、送信者の ExperienceInviteOptions
ローカルスクリプト - 複数の友達を招待する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() を通じてサーバー側の発売データをチェックします。JSONDecode() にインスタンスの複数のデータを JSON でエンコードする場合、Class.HttpService:JSONDecode()|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 にある場プレースにあるかどうかをチェックし、友達のキャラクターをそのキャラクターの近くにテレポートします。