Personalizza la chat a bolle

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

Con TextChatService, puoi utilizzare la chat a bolle per visualizzare bolle di chat personalizzabili sopra gli avatar degli utenti e gli NPC. La chat a bolle può rendere il tuo gioco più visivamente coinvolgente e aiutare gli utenti a identificare facilmente i messaggi e i loro oratori in modo contestualmente rilevante. Questa funzione è particolarmente utile per i giochi in cui gli utenti devono concentrarsi sul contenuto mentre comunicano con gli altri in modo meno invadente.

Abilitare la chat a bolle

Per abilitare la chat a bolle nel tuo gioco:

  1. Nella finestra Explorer, seleziona BubbleChatConfiguration sotto TextChatService.

  2. Nella finestra Properties, seleziona la casella di controllo BubbleChatConfiguration.Enabled.

Personalizzazione delle bolle

Dopo aver abilitato la chat a bolle, puoi personalizzare l'aspetto e il comportamento delle tue bolle di chat per adattarle al tema del tuo gioco. Utilizza la finestra Properties di BubbleChatConfiguration per modifiche di base come il colore del testo e gli spazi, oppure implementa la personalizzazione avanzata per le immagini di sfondo delle bolle e altre regolazioni visive.

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

Personalizzazione di base

La seguente tabella mostra le proprietà comuni di personalizzazione delle bolle di chat. Per un elenco completo delle proprietà di personalizzazione, vedere BubbleChatConfiguration.

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

Personalizzazione avanzata

Per la personalizzazione avanzata delle tue bolle, aggiungi oggetti UI che rappresentano determinati aspetti dell'aspetto della bolla come figli sotto BubbleChatConfiguration, tra cui:

  • ImageLabel per le impostazioni dell'immagine di sfondo.
  • UIGradient per le impostazioni del gradiente di sfondo.
  • UICorner per la forma degli angoli delle bolle.
  • UIPadding per lo spazio di padding tra il testo e i bordi della bolla, relativo alla dimensione normale del genitore.

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

Personalizzazione Avanzata della Bolla

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://109157529833093"
bubbleImageLabel.ScaleType = Enum.ScaleType.Slice
bubbleImageLabel.SliceCenter = Rect.new(40, 40, 320, 120)
bubbleImageLabel.SliceScale = 0.5

Le seguenti tabelle delineano gli oggetti disponibili GuiObject e le proprietà di modifica dell'aspetto insieme alle loro proprietà di personalizzazione valide:

ProprietàDescrizioneDefault
ImageID dell'asset dell'immagine di sfondo della bolla.
ImageColor3Tonalità di colore dell'immagine di sfondo della bolla in Color3.[255, 255, 255]
ImageRectOffsetOffset dell'area dell'immagine da visualizzare dall'angolo in alto a sinistra in pixel.(0, 0)
ImageRectSizeDimensione dell'area dell'immagine da visualizzare in pixel. Per visualizzare l'intera immagine, impostare una delle dimensioni a 0.(0, 0)
ScaleTypeIl tipo di scala per il rendering dell'immagine quando la sua dimensione è diversa dalla dimensione assoluta della bolla.Stretch
SliceCenterValichi di fette dell'immagine se l'immagine è un'immagine a 9 fette. Applicabile solo quando impostato ScaleType come Slice.(0, 0, 0, 0)
SliceScaleRapporto di scala dei bordi delle fette se l'immagine è un'immagine a 9 fette. Applicabile solo quando impostato ScaleType come Slice.1
TileSizeDimensione della tiling dell'immagine. Applicabile solo quando impostato ScaleType come Tile.(1, 0, 1, 0)

Personalizzazione per bolla

Puoi stilizzare e modificare individualmente i comportamenti delle bolle di chat in base a specifiche condizioni per sovrascrivere le tue impostazioni generali. Ad esempio, puoi utilizzare le bolle di chat per differenziare gli NPC e gli utenti, evidenziare stati di salute critici e applicare effetti speciali ai messaggi con parole chiave predefinite.

Per impostare la personalizzazione per bolla, aggiungi uno LocalScript lato client utilizzando BubbleChatMessageProperties, che sovrascrive le proprietà corrispondenti di BubbleChatConfiguration, e il callback TextChatService.OnBubbleAdded per specificare come personalizzare ciascuna bolla. Il callback ti fornisce la proprietà TextChatMessage così come l'adorato, in modo da poter applicare la personalizzazione in base ad attributi associati agli utenti, al contenuto del testo della chat, alle proprietà dei personaggi degli utenti e a qualsiasi condizione speciale che desideri definire.

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

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

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

Bolle VIP

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Gestore eventi per quando viene aggiunta una nuova bolla di chat al gioco
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Controlla se il messaggio di chat ha una TextSource (mittente) associata
if message.TextSource then
-- Crea una nuova istanza di BubbleChatMessageProperties per personalizzare la bolla di chat
local bubbleProperties = Instance.new("BubbleChatMessageProperties")
-- Ottieni l'utente che ha inviato il messaggio di chat in base al loro UserId
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
if player:GetAttribute("IsVIP") then
-- Se il giocatore è VIP, personalizza le proprietà della bolla di 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 avanzata sono disponibili per la personalizzazione per bolla. Simile alla personalizzazione avanzata per le bolle generali, aggiungi istanze che desideri personalizzare come figli di BubbleChatMessageProperties. Il seguente esempio aggiunge un effetto di gradiente speciale insieme ad altre proprietà alle bolle di chat degli utenti con uno stato di salute basso controllando la proprietà Humanoid.Health dei personaggi dei mittenti dei messaggi di chat:

Bolle a Bassa Salute

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Gestore eventi per quando viene aggiunta una nuova bolla di chat al gioco
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Controlla se il messaggio di chat ha una TextSource (mittente) associata
if message.TextSource then
-- Ottieni l'utente che ha inviato il messaggio di chat utilizzando il loro UserId
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
-- Trova il umanoide nel personaggio dell'utente
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid and humanoid.Health < 25 then
-- Crea un'istanza di BubbleChatMessageProperties per personalizzare la bolla di chat
local bubbleProperties :BubbleChatMessageProperties = Instance.new("BubbleChatMessageProperties")
-- Personalizza le proprietà della bolla di chat per la condizione di bassa salute
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.Rotation = 90
uiGradient.Parent = bubbleProperties
return bubbleProperties
end
end
end

Visualizzare manualmente le bolle

Potresti voler visualizzare una bolla di chat quando i giocatori non hanno inviato un messaggio, come con gli NPC. Usa il metodo TextChatService:DisplayBubble() per visualizzare manualmente una bolla di chat.

La personalizzazione di queste bolle è la stessa della personalizzazione delle bolle che vengono visualizzate automaticamente quando i giocatori inviano messaggi tramite TextChannels utilizzando il callback TextChatService.OnBubbleAdded.

Bolle NPC

Visualizza bolle di chat per personaggi non giocanti (NPC) chiamando TextChatService:DisplayBubble(character, message), con il personaggio NPC e il messaggio come parametri. Queste bolle sono personalizzabili utilizzando il callback TextChatService.OnBubbleAdded proprio come qualsiasi altra bolla di chat.

TextChatService:DisplayBubble() funziona solo su script lato client, quindi assicurati di utilizzare uno Script con RunContext impostato su Enum.RunContext.Client, o uno LocalScript in un contenitore appropriato, come StarterPlayerScripts. Se colleghi un ProximityPrompt a un NPC, uno script per visualizzare una bolla di chat potrebbe apparire in questo modo:


local TextChatService = game:GetService("TextChatService")
local Workspace = game:GetService("Workspace")
local prompt = Workspace.SomeNPC.ProximityPrompt
local head = prompt.Parent:WaitForChild("Head")
prompt.Triggered:Connect(function()
TextChatService:DisplayBubble(head, "Ciao mondo!")
end)
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.