Oltre ai metodi di promozione comuni per aumentare la tua base di giocatori, puoi anche implementare messaggi di invito direttamente all'interno della tua esperienza, incoraggiando i giocatori a invitare i propri amici e ad aumentare il gameplay in co-esperienza.
Il sistema di messaggi d'invito ha le seguenti caratteristiche:
- Invitati dinamici: invita i giocatori a invitare più amici da una lista di selezione o a invitare un amico specifico.
- Dati di lancio: includere dati di lancio facoltativi che possono essere letti Player:GetJoinData()quando l'amico/a si unisce. Casi d'utilizzo d'esempio includono l'indirizzare gli amici invitati a una posizione di coordinata o la personalizzazione dell'attività di unirsi all'esperienza per l'invitato/a.
- Testo personalizzabile: personalizza il messaggio d'invito e il messaggio di notifica. Ad esempio, un messaggio d'invito per il giocatore può riportare "Chiedi ai tuoi amici di unirsi alla tua avventura!" e il messaggio di notifica per gli amici invitati può contenere "{displayName} vuole che tu ti unisca alla sua avventura in {experienceName}!".
Impostazione delle opzioni d'invito
Per impostazione predefinita, un messaggio d'invito per il giocatore mostra un menu dei propri amici con i pulsanti Invita. Per personalizzare il messaggio, indirizzarlo a un amico specifico, o includere i dati di lancio nell'invito, dovrai impostare un ExperienceInviteOptionsoggetto con le proprietà desiderate.
Proprietà | Tipo | Descrizione |
---|---|---|
PromptMessage | stringa | Testo personalizzato mostrato sul messaggio d'invito al giocatore inviante, ad esempio "Chiedi ai tuoi amici di unirsi all'avventura!" per un messaggio d'invito a più amici, o "Invita quest'amico a unirsi all'avventura!" Nota che se il tuo messaggio d'invito personalizzato è così lungo da superare i limiti dell'UI, esso non verrà mostrato. |
InviteUser | numero | Roblox UserIddell'amico/a specifico/a da invitare; se non fornito, il giocatore verrà invitato a scegliere da un elenco di amici. |
InviteMessageId | stringa | ID risorsa che viene mappato su un tipo di risorsa Notifica. Questa risorsa viene utilizzata per memorizzare/localizzare una stringa personalizzata per la notifica d'invito ricevuta dagli amici. Vedere Opzioni di notifica impostate per dettagli. |
LaunchData | stringa | Usato per impostare un parametro per Player:GetJoinData()quando un amico si unisce dalla notifica d'invito. Massimo 200 caratteri. Vedere Includere dati di lancio per un esempio d'uso. |
LocalScript - Invite Multiple Friends
local SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayer-- Construct invite options with a custom prompt messagelocal inviteOptions = Instance.new("ExperienceInviteOptions")inviteOptions.PromptMessage = "Ask your friends to join the adventure!"
Impostare le opzioni di notifica
Per impostazione predefinita, la notifica d'invito che gli amici ricevono contiene DisplayNameil mittente, l'username e il nome dell'esperienza. Per personalizzare il messaggio, puoi creare una risorsa di Notifica nel Pannello di creazione di creazione e includere il suo ID risorsa come parametro di ExperienceInviteOptions.
Vai al Pannello di creazione.
Simili ai badge, le stringhe di notifica sono legate a un'esperienza specifica. Individuare quella miniatura dell'esperienza e fare clic su di essa.
Nella colonna di sinistra, fare clic su Notifiche.
Nella regione centrale, fare clic sul pulsante Crea una stringa di notifiche.
Inserire un nome identificativo (visibile solo a te) e il testo di notifica personalizzato. Nota che devi includere {experienceName} come placeholder per identificare il nome dell'esperienza per gli amici invitati, e puoi facoltativamente includere il mittente DisplayNameattraverso il placeholder {displayName}. Ad esempio:
- {displayName} vuole che tu ti unisca alla sua avventura in {experienceName}!
- {displayName} ha appena completato la sesta fase di {experienceName}. Riesci a farlo?
Quando sei pronto/a, fai clic sul pulsante Crea stringa di notifiche.
Nella pagina delle notifiche, fai clic sul pulsante
Nell'ExperienceInviteOptionsoggetto per il messaggio d'invito, incollare l'ID risorsa come valore della InviteMessageIdproprietà.
LocalScript - Invite Multiple Friendslocal SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayer-- Construct invite options with friend's user IDlocal inviteOptions = Instance.new("ExperienceInviteOptions")inviteOptions.InviteMessageId = "ef0e0790-e2e8-4441-9a32-93f3a5783bf1"
Inviare un invito
Per inviare un invito, dovresti prima determinare se il giocatore può inviare un invito, in quanto la possibilità può variare a seconda della piattaforma o del giocatore. Una volta confermato, puoi mostrare il messaggio d'invito al giocatore.
- SocialService:CanSendGameInviteAsync()Chiama, avvolto da pcall()un poiché è una chiamata di rete asincrona che può occasionalmente interrompersi.
- Se la capacità d'invito viene confermata, SocialService:PromptGameInvite()chiama con l'oggetto di opzioni d'invito facoltative come secondo argomento.
Una volta inviato, il giocatore vedrà un messaggio sullo schermo che lo spinge a invitare più amici, o l'amico/a specifico/a definito/a nell'oggetto delle opzioni d'invito. Quando il giocatore fa poi clic sul pulsante Invita per uno o più amici, questi amici riceveranno una notifica contenente DisplayNameil mittente, l'username e il nome dell'esperienza. Le notifiche possono essere ulteriormente personalizzate come illustrato in Impostare opzioni di notifica.
LocalScript - Invite Multiple Friends
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Function to check whether the player can send an invite
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
local success, errorMessage = pcall(function()
SocialService:PromptGameInvite(player)
end)
end
Includere i dati di lancio
Per migliorare ulteriormente la cooperazione all'interno dell'esperienza o per incentivare gli inviti dei giocatori, puoi includere i dati di lancio in un messaggio d'invito, utile per scenari come l'indirizzamento degli amici invitati in una posizione di coordinata o per personalizzare l'esperienza di accesso per l'invitato.
- Quando si invia un invito, includere un ExperienceInviteOptions oggetto con dati rilevanti che saranno utilizzati quando l'amico/a si unirà all'esperienza, ad esempio, il mittentePlayer.UserId, l'ID di un badge da assegnare all'amico al momento dell'adesione o una posizione di coordinata in cui rigenerare l'amico.. Se hai bisogno di compilare più dati, codifica i dati utilizzando JSONEncode().
LocalScript - Invite Multiple Friends
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)
-- Construct invite options with launch data
local inviteOptions = Instance.new("ExperienceInviteOptions")
inviteOptions.LaunchData = launchData
-- Function to check whether the player can send an invite
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
local success, errorMessage = pcall(function()
SocialService:PromptGameInvite(player, inviteOptions)
end)
end
Per gli amici in arrivo che si uniscono tramite notifica, controlla i dati di lancio lato server attraverso Player:GetJoinData(). Se codifichi più dati in JSON per il messaggio d'invito, ricordati di decodificarlo con JSONDecode().
Script - Using Invite Launch Datalocal HttpService = game:GetService("HttpService")local Players = game:GetService("Players")local ATTEMPT_LIMIT = 10local RETRY_DELAY = 1local function onPlayerAdded(player)local launchDatafor i = 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)Se esistono i dati di lanci, puoi usarli per una vasta gamma di scenari di design, tra cui:
- Rigenera l'amico in arrivo all'inizio di un percorso a ostacoli impegnativo che il mittente ha appena completato, in base a una posizione di coordinata passata attraverso i dati di lancio.
- Verifica se il mittente è sul posto, in base Player.UserIdai suoi dati di lancio e teletrasporta il personaggio dell'amico vicino al suo personaggio.