プレイヤーベースを拡大するための一般的な プロモーション 方法に加えて、エクスペリエンス内で 招待プロンプト を直接実装し、プレイヤーが友達を招待し、共同経験ゲームプレイを増やすように促すことができます。
招待プロンプトシステムにはフォロー中の機能があります:
- ダイナミック招待者 — プレイヤーに選択リストから複数の友達を招待するか、特定の友達を招待するよう促す
- 発進データ — 招待された友人が参加すると を通じて読み込めるオプションの Player:GetJoinData() を含めます。例えば使用ケースには、招待された友達を座標位置にルートするか、招待者の参加体験をカスタマイズすることが含まれます。
また、友達招待報酬システム を使用して、招待者と招待者を追跡し、報酬を授与することもできます。

招待オプションを設定
デフォルトでは、プレイヤーの招待プロンプトには、 招待 ボタンのメニューが表示されます。プロンプトメッセージをカスタマイズしたり、特定の友達をターゲットにしたり、招待にランチデータを含めるには、必要なプロパティで ExperienceInviteOptions オブジェクトを設定する必要があります。
性質 | 種類 | 説明 |
---|---|---|
PromptMessage | 文字列 | 例えば、マルチフレンド招待プロンプトで「友達に冒アドベンチャーに参加してもらう」などのカスタムテキスト、または特定の友達招待プロンプトで「この友達を冒アドベンチャーに招待する」などの特定の友達招待プロンプトが表示されます。カスタム招待プロンプトメッセージが UI の境界を超えるほど長い場合、表示されないことに注意してください。 |
InviteUser | 番号 | 招待する特定の友達の Roblox UserId ;提供されない場合、プレイヤーに友達のリストから選択するように促されます。 |
InviteMessageId | 文字列 | 通知 アセットタイプにマップするアセットI入力。このアセットは、友達が受け取る招待通知のカスタム文字列を保存/ローカライズするために使用されます。詳細については、設定通知オプション を参照してください。 |
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として含めることができます。
ナビゲート to the クリエイターダッシュボード.
バッジと同様、通知ストリングは 特定のエクスペリエンス に結び付けられています。そのエクスペリエンスのサムネイルを見つけて、クリックします。
左の列で、 エンゲージメント の下で、 通知 をクリックします。
中央の領域で、 通知文字列を作成する ボタンをクリックします。
識別名 (あなたにしか表示されない) とカスタム通知テキストを入力します。招待された友達のエクスペリエンス名を識別するために experienceName をプレースホルダーとして含める必要があり、オプションで送信者の DisplayName を displayName プレースホルダーを介して含めることができます。
例の通知文字列:
- displayName は experienceName で彼らの冒険に参加したいと思っています!
- displayName がexperienceNameの 6番目のステージをクリアしました。できますか?
準備ができたら、 通知ストリングを作成するボタン をクリックします。
通知ページで、通知の表で ⋯ ボタンをクリックし、 アクション 列の アセット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"
招待を促す
招待を促すには、まずプレイヤーが 招待を送信できるか を判断する必要があります。能力はプラットフォームまたはプレイヤーによって異なる可能性があるためです。確認が完了すると、プレイヤーに招待プロンプトを表示できます。
- 呼び出し , 包まれている since it's an 非同期ネットワーク呼び出しは時折失敗する可能性があります。
- 招待能力が確認された場合、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
発進データを含める
経験内の協力をさらに改善するか、プレイヤーへの招待を奨励するには、 ランチデータ を招待プロンプトに含めることができます。これは、招待された友人を座標位置にルートするなどのシナリオや、招待者の参加経験を個人化するのに便利です。
招待を促すとき、友達がエクスペリエンスに参加するときに使用される関連するデータの オブジェクトを含める、例えば送信者の 、参加時に授与される バッジ、または友達をスポーンするための座標場所。複数のデータをコンパイルする必要がある場合は、JSONEncode() を使用してデータをエンコードします。
ローカルスクリプト - 複数の友達を招待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)発射データが存在する場合、次のような多種多様なデザインシナリオに使用できます:
- 送信者がまさに完了した挑戦的な障害コースの最初に、受信者をコーディネート位置を通じて送信データでパスしたものに基づいて生成します。
- 送信者 が配置場プレースにあるかどうかをチェックし、ランチデータの Player.UserId に基づいて、友達のキャラクターの近くにテレポートします。