Chat a bolle

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Con il sistema in-experience text chat, puoi supportare bubble chat per visualizzare chat di voce personalizzabili sopra gli avatar e gli NPC. La chat a bolle può rendere la tua esperienza più coinvolgente visivamente e aiutare gli utenti a identificare facilmente messaggi e i loro speaker in un modo contextualmente rilevante. Questa funzione è particolarmente utile per le esperienze in cui gli utenti devono concentrarsi

Abilitare Bubble Chat

Per abilitare la chat a bolle nella tua esperienza:

  1. Nella finestra Proprietà, controlla la casella di controllo Enabled .

Personalizzazione delle bolle

Dopo l'attivazione della chat a bolle, puoi personalizzare l'aspetto e il comportamento delle tue bolle di chat per corrispondere alla tua esperienza. Usa la finestra proprietà di BubbleChatConfiguration per cambiamenti di base come il colore del testo e lo spazio, o implementa 2>avanzati2> personalizzazioni per le immagini di sfondo delle bolle e altri regolament

In alternativa, puoi aggiungere un LocalScript in StarterPlayerScripts con tutte le tue impostazioni di personalizzazione. Ciò consente al motore di applicare le tue personalizzazioni durante l'Tempo esecuzione, sovrascrivendo le impostazioni in Studio. È utile aggiungere effetti speciali alle bolle di chat quando gli utenti attivano determinati eventi o condizioni.

Personalizzazione di base

La seguente tabella mostra le proprietà di chat a bolle comuni. Per una lista completa delle proprietà di personalizzazione, vedi BubbleChatConfiguration .

ProprietàDescrizionePredefinito
BackgroundColor3Colore di sfondo delle bolle in Color3 .[250, 250, 250]
FontFaceFont del testo a bolle.BuilderSansMedium
TextColor3Colore del testo a bolle in Color3 .[57, 59, 61]
TextSizeDimensione del testo a bolle.16

Personalizzazione avanzata

Per la personalizzazione avanzata della tua bolle, aggiungi oggetti UI che rappresentano determinati aspetti dell'aspetto della bolle come bambini sotto BubbleChatConfiguration , tra cui:

  • ImageLabel per le impostazioni dell'immagine di sottofondo.
  • UIGradient per le impostazioni digradiente di sfondo.
  • UICorner per la forma della curva delle bolle.
  • UIPadding per lo spazio di riempimento tra il testo e le linee guida, rispetto alle dimensioni normali del parent.

Dopo aver aggiunto questi oggetti, puoi modificare le proprietà di questi oggetti applicabili alle bolle di chat per la personalizzazione delle bolle avanzata. Il seguente esempio LocalScript aggiunge un'immagine di sfondo e angoli taglienti alle bolle:

Personalizzazione delle bolle avanzata

local TextChatService = game:GetService("TextChatService")
local bubbleChatConfiguration = TextChatService.BubbleChatConfiguration
bubbleChatConfiguration.TailVisible = false
bubbleChatConfiguration.TextColor3 = Color3.fromRGB(220, 50, 50)
bubbleChatConfiguration.FontFace = Font.fromEnum(Enum.Font.LuckiestGuy)
local bubbleUICorner = bubbleChatConfiguration:FindFirstChildOfClass("UICorner")
if not bubbleUICorner then
bubbleUICorner = Instance.new("UICorner")
bubbleUICorner.Parent = bubbleChatConfiguration
end
bubbleUICorner.CornerRadius = UDim.new(0, 0)
local bubbleUIPadding = bubbleChatConfiguration:FindFirstChildOfClass("UIPadding")
if not bubbleUIPadding then
bubbleUIPadding = Instance.new("UIPadding")
bubbleUIPadding.Parent = bubbleChatConfiguration
end
bubbleUIPadding.PaddingTop = UDim.new(0, 20)
bubbleUIPadding.PaddingRight = UDim.new(0, 10)
bubbleUIPadding.PaddingBottom = UDim.new(0, 15)
bubbleUIPadding.PaddingLeft = UDim.new(0, 10)
local bubbleImageLabel = bubbleChatConfiguration:FindFirstChildOfClass("ImageLabel")
if not bubbleImageLabel then
bubbleImageLabel = Instance.new("ImageLabel")
bubbleImageLabel.Parent = bubbleChatConfiguration
end
bubbleImageLabel.Image = "rbxassetid://6733332557"
bubbleImageLabel.ScaleType = Enum.ScaleType.Slice
bubbleImageLabel.SliceCenter = Rect.new(40, 40, 320, 120)
bubbleImageLabel.SliceScale = 0.5

Le seguenti tabelle riassumono i disponibili GuiObject e modificatori di aspetto figli insieme alle loro proprietà di personalizzazione valide:

ProprietàDescrizionePredefinito
ImageID risorsa dell'immagine di sfondo della bolle.
ImageColor3Tintura del colore della immagine di sfondo della bolle in Color3 .[255, 255, 255]
ImageRectOffsetSpostamento dell'area dell'immagine da mostrare in pixel dalla parte superiore sinistra.(0, 0)
ImageRectSizeDimensione dell'area dell'immagine da visualizzare in pixel. Per visualizzare l'intera immagine, imposta qualsiasi dimensione su 0 .(0, 0)
ScaleTypeIl tipo di scala per rendere l'immagine quando la sua dimensione è diversa dalla dimensione assoluta della bolle.Stretch
SliceCenterTaglia i limiti dell'immagine se l'immagine è un'immagine a 9 strati. Applicabile solo quando impostate ScaleType come Slice .(0, 0, 0, 0)
SliceScaleScala la relazione delle dimensioni delle edge se l'immagine è un'immagine a 9 livelli. Applicabile solo quando impostate ScaleType come Slice .1
TileSizeDimensione di pixelizzazione dell'immagine. Si applica solo quando hai impostato ScaleType come Tile .(1, 0, 1, 0)

Personalizzazione per-bubble

Puoi personalizzare e modificare i comportamenti della bolle di chat in base a condizioni specifiche che sovrascrivono le tue impostazioni generali. Ad esempio, puoi utilizzare le bolle di chat per differenziare gli NPC e gli utenti, evidenziare lo Statodi salute critico e applicare effetti speciali ai messaggi con parole chiave predefinite.

Per impostare la personalizzazione delle bolle, aggiungi un client-side LocalScript utilizzando BubbleChatMessageProperties , che sovrascrive le proprietà di corrisponden

Le seguenti proprietà di personalizzazione di base sono disponibili per la personalizzazione delle bolle:

ProprietàDescrizionePredefinito
BackgroundColor3Colore di sfondo delle bolle in Color3 .(250, 250, 250)
BackgroundTransparencyTrasparenza di sfondamento delle bolle.0.1
FontFaceFont del testo a bolle.BuilderSansMedium
TextColor3Colore del testo a bolle in Color3 .[57, 59, 61]
TextSizeDimensione del testo a bolle.16

L'esempio seguente aggiunge un aspetto speciale alle bolle di chat degli utenti VIP controllando se un mittente di messaggi ha l'attributo IsVIP :

Bolle VIP

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Handling dell'evento per quando una nuova bolle di chat viene aggiunta all'esperienza
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Controlla se il messaggio di chat ha un TextSource ( mittente ) associato
if message.TextSource then
-- Crea una nuova istanza di BubbleChatMessageProperties per personalizzare la bolle di chat
local bubbleProperties = Instance.new("BubbleChatMessageProperties")
-- Ottieni l'utente che ha inviato il messaggio di chat in base al suo UserId
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
if player:GetAttribute("IsVIP") then
-- Se il giocatore è un VIP, personalizza le proprietà della chat
bubbleProperties.TextColor3 = Color3.fromHex("#F5CD30")
bubbleProperties.BackgroundColor3 = Color3.fromRGB(25, 27, 29)
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.PermanentMarker)
end
return bubbleProperties
end
end

Tutte le opzioni di personalizzazione avanzate sono disponibili per la personalizzazione per-bubble. Come le opzioni di personalizzazione per le generali bolle, aggiungi istanze che vuoi personalizzare come figli di BubbleChatMessageProperties . Il seguente esempio aggiunge un effetto di gradiente speciale insieme a altre proprietà per le bolle delle persone con uno stato di salute basso facendo clic sulla proprietà

Bolle di salute bassa

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Handling dell'evento per quando una nuova bolle di chat viene aggiunta all'esperienza
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Controlla se il messaggio di chat ha un TextSource ( mittente ) associato
if message.TextSource then
-- Ottieni l'utente che ha inviato il messaggio di chat utilizzando il suo UserId
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
-- Trova l'uomoide nel personaggio dell'utente
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid and humanoid.Health < 25 then
-- Crea una nuova istanza di BubbleChatMessageProperties per personalizzare la bolle di chat
local bubbleProperties :BubbleChatMessageProperties = Instance.new("BubbleChatMessageProperties")
-- Personalizza le proprietà della bolle di chat per la condizione di salute bassa
bubbleProperties.BackgroundColor3 = Color3.fromRGB(245, 245, 245)
bubbleProperties.TextColor3 = Color3.fromRGB(234, 51, 96)
bubbleProperties.TextSize = 20
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.DenkOne)
-- Aggiungi un UIGradient come figlio per personalizzare il gradiente
local uiGradient : UIGradient = Instance.new("UIGradient")
uiGradient.Color = ColorSequence.new(Color3.fromRGB(110, 4, 0), Color3.fromRGB(0, 0, 0))
uiGradient.Parent = bubbleProperties
uiGradient.Rotation = 90
return bubbleProperties
end
end
end

Bolle NPC

Puoi visualizzare le bolle di chat per i personaggi non giocatori (NPC) chiamando TextChatService:DisplayBubble() , con il personaggio NPC e il messaggio come parametri. Queste bolle sono personalizzabili utilizzando il TextChatService.OnBubbleAdded callback come qualsiasi altra chatubble.

TextChatService:DisplayBubble() funziona solo sugli script lato client, quindi assicurati di utilizzare un Script


local TextChatService = game:GetService("TextChatService")
local prompt = workspace.SomeNPC.ProximityPrompt
local head = prompt.Parent:WaitForChild("Head")
prompt.Triggered:Connect(function()
TextChatService:DisplayBubble(head, "Hello world!")
end)