Com Serviço de Chat de Texto, você pode usar o bate-papo de bolhas para exibir bolhas de chat personalizáveis acima de avatares de usuários e NPCs.O bate-papo de bolhas pode tornar sua experiência mais visualmente imersiva e ajudar os usuários a identificar facilmente mensagens e seus oradores de maneira contextualmente relevante.Essa característica é especialmente útil para experiências em que os usuários precisam se concentrar no conteúdo, enquanto se comunicam com outros de uma maneira menos intrusiva.
Ativar bate-papo de bolhas
Para habilitar o bate-papo de bolhas em sua experiência:
Na janela Explorer, selecione BubbleChatConfiguration sob TextChatService.
Na janela Propriedades, verifique a caixa de seleção BubbleChatConfiguration.Enabled.
Personalização de bolhas
Depois de ativar o bate-papo de bolhas, você pode personalizar a aparência e o comportamento de suas bolhas de bate-papo para combinar com o tema da sua experiência.Use a janela Propriedades de BubbleChatConfiguration para mudanças básicas como cor de texto e espaçamento, ou implemente personalização avançada para imagens de fundo de bolhas e outros ajustes visuais.

Alternativamente, adicione um LocalScript em StarterPlayerScripts com todas as suas configurações de personalização.Isso permite que o motor aplique suas personalizações durante a tempo de execução, substituindo as configurações no Studio.É útil para adicionar efeitos especiais às bolhas de bate-papo quando os usuários acionam determinados eventos ou condições.
Personalização básica
A tabela a seguir mostra as propriedades de personalização de bate-papo de bolhas comuns. Para uma lista completa de propriedades de personalização, veja BubbleChatConfiguration.
Propriedade | Descrição | Padrão |
---|---|---|
BackgroundColor3 | Cor de fundo das bolhas em Color3 . | [250, 250, 250] |
FontFace | Font da texto da bolha. | BuilderSansMedium |
TextColor3 | Cor do texto da bolha em Color3 . | [57, 59, 61] |
TextSize | Tamanho do texto da bolha. | 16 |
Personalização avançada
Para personalização avançada da sua bolha, adicione objetos de interface representando certos aspectos da aparência da bolha como crianças sob BubbleChatConfiguration, incluindo:
- ImageLabel para configurações de imagem de fundo.
- UIGradient para configurações de gradiente de fundo.
- UICorner para a forma de canto das bolhas.
- UIPadding para o espaço de preenchimento entre os cantos do texto e das bolhas, em relação ao tamanho normal do pai.
Depois de adicionar esses objetos, você pode modificar as propriedades desses objetos aplicáveis às bolhas de bate-papo para personalização avançada de bolhas.O seguinte exemplo LocalScript adiciona uma imagem de fundo e cantos afiados às bolhas:
Personalização avançada de bolhas
local TextChatService = game:GetService("TextChatService")local bubbleChatConfiguration = TextChatService.BubbleChatConfigurationbubbleChatConfiguration.TailVisible = falsebubbleChatConfiguration.TextColor3 = Color3.fromRGB(220, 50, 50)bubbleChatConfiguration.FontFace = Font.fromEnum(Enum.Font.LuckiestGuy)local bubbleUICorner = bubbleChatConfiguration:FindFirstChildOfClass("UICorner")if not bubbleUICorner thenbubbleUICorner = Instance.new("UICorner")bubbleUICorner.Parent = bubbleChatConfigurationendbubbleUICorner.CornerRadius = UDim.new(0, 0)local bubbleUIPadding = bubbleChatConfiguration:FindFirstChildOfClass("UIPadding")if not bubbleUIPadding thenbubbleUIPadding = Instance.new("UIPadding")bubbleUIPadding.Parent = bubbleChatConfigurationendbubbleUIPadding.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 thenbubbleImageLabel = Instance.new("ImageLabel")bubbleImageLabel.Parent = bubbleChatConfigurationendbubbleImageLabel.Image = "rbxassetid://109157529833093"bubbleImageLabel.ScaleType = Enum.ScaleType.SlicebubbleImageLabel.SliceCenter = Rect.new(40, 40, 320, 120)bubbleImageLabel.SliceScale = 0.5

As seguintes tabelas descrevem os modificadores de aparência disponíveis GuiObject e crianças junto com suas propriedades de personalização válidas:
Propriedade | Descrição | Padrão |
---|---|---|
Image | ID da imagem de fundo da bolha. | |
ImageColor3 | Tint de cor da imagem de fundo da bolha em Color3 . | [255, 255, 255] |
ImageRectOffset | Deslocamento da área da imagem a ser exibida a partir da parte superior esquerda em pixels. | (0, 0) |
ImageRectSize | Tamanho da área de imagem a ser exibida em pixels. Para exibir toda a imagem, defina uma das dimensões para 0. | (0, 0) |
ScaleType | O tipo de escala para renderizar a imagem quando seu tamanho for diferente do tamanho absoluto da bolha. | Stretch |
SliceCenter | Corte os limites da imagem se a imagem for uma imagem de 9 fatias. Aplicável somente quando você definir ScaleType como Slice. | (0, 0, 0, 0) |
SliceScale | Taxa de escala dos cantos da fatia se a imagem for uma imagem de 9 fatias. Aplicável somente quando você definir ScaleType como Slice. | 1 |
TileSize | Tamanho de azulejo da imagem. Aplicável somente quando você definir ScaleType como Tile. | (1, 0, 1, 0) |
Personalização por bolha
Você pode personalizar e modificar individualmente os comportamentos das bolhas de bate-papo com base em condições específicas para substituir suas configurações gerais.Por exemplo, você pode usar bolhas de bate-papo para diferenciar NPCs e usuários, destacar o status de saúde crítico e aplicar efeitos especiais a mensagens com palavras-chave predefinidas.
Para definir personalização por bolha, adicione um lado do cliente LocalScript usando BubbleChatMessageProperties, que substitui as propriedades correspondentes de BubbleChatConfiguration e o retorno de chamada TextChatService.OnBubbleAdded para especificar como personalizar cada bolha.O retorno de chamada fornece a você a propriedade TextChatMessage com a adornada, para que você possa aplicar a personalização com base em atributos associados a usuários, o conteúdo do texto do chat, as propriedades do personagem do usuário e quaisquer condições especiais que você queira definir.
As seguintes propriedades de personalização básica estão disponíveis para personalização por bolha:
Propriedade | Descrição | Padrão |
---|---|---|
BackgroundColor3 | Cor de fundo das bolhas em Color3 . | (250, 250, 250) |
BackgroundTransparency | Transparência de fundo de bolhas. | 0.1 |
FontFace | Font da texto da bolha. | BuilderSansMedium |
TextColor3 | Cor do texto da bolha em Color3 . | [57, 59, 61] |
TextSize | Tamanho do texto da bolha. | 16 |
O seguinte exemplo adiciona uma aparência especial às bolhas de chat de usuários VIP verificando se um remetente de mensagens de chat tem o atributo IsVIP:
Bolhas VIP
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Manuseador de eventos para quando uma nova bolha de chat é adicionada à experiência
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Verifique se a mensagem de bate-papo tem uma Fonte de Texto (enviador) associada a ela
if message.TextSource then
-- Crie uma nova instância de BubbleChatMessageProperties para personalizar a bolha de chat
local bubbleProperties = Instance.new("BubbleChatMessageProperties")
-- Obtenha o usuário que enviou a mensagem de bate-papo com base em seu UserId
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
if player:GetAttribute("IsVIP") then
-- Se o jogador for VIP, personalize as propriedades da bolha de 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
Todas as opções avançadas de personalização estão disponíveis para personalização por bolha.Semelhante à personalização avançada para bolhas gerais, adicione instâncias que você deseja personalizar como filhos de BubbleChatMessageProperties .O seguinte exemplo adiciona um efeito de gradiente especial junto com outras propriedades para bolhas de chat de usuários com baixo status de saúde verificando a propriedade Humanoid.Health dos personagens dos enviadores de mensagens de chat:
Bolhas de Saúde Baixa
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Manuseador de eventos para quando uma nova bolha de chat é adicionada à experiência
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Verifique se a mensagem de bate-papo tem uma Fonte de Texto (enviador) associada a ela
if message.TextSource then
-- Obtenha o usuário que enviou a mensagem de bate-papo usando seu UserId
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
-- Encontre o humanoide no personagem do usuário
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid and humanoid.Health < 25 then
-- Crie uma nova instância de BubbleChatMessageProperties para personalizar a bolha de chat
local bubbleProperties :BubbleChatMessageProperties = Instance.new("BubbleChatMessageProperties")
-- Personalize as propriedades da bolha de bate-papo para condição de saúde baixa
bubbleProperties.BackgroundColor3 = Color3.fromRGB(245, 245, 245)
bubbleProperties.TextColor3 = Color3.fromRGB(234, 51, 96)
bubbleProperties.TextSize = 20
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.DenkOne)
-- Adicione um UIGradient como filho para personalizar o 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
Exibir bolhas manualmente
Você pode querer exibir uma bolha de bate-papo quando os jogadores não enviaram uma mensagem, como com NPCs.Use o método TextChatService:DisplayBubble() para exibir manualmente uma bolha de chat.
A personalização dessas bolhas é a mesma que a personalização das bolhas que são exibidas automaticamente quando os Jogadores enviam mensagens através de Canais de Texto usando o TextChatService.OnBubbleAdded callback .
Bolhas de PNJ
Exibir bolhas de chat para personagens não jogadores (NPCs) ao chamar TextChatService:DisplayBubble(character, message), com o personagem NPC e a mensagem como parâmetros.Essas bolhas são personalizáveis usando o TextChatService.OnBubbleAdded retorno de chamada, assim como qualquer outra bolha de chat.
TextChatService:DisplayBubble() só funciona em scripts do lado do cliente, portanto, certifique-se de usar um Script com RunContext definido para Enum.RunContext.Client , ou um LocalScript em um recipiente apropriado, como StarterPlayerScripts.Se você anexar um ProximityPrompt a um NPC, um script para exibir uma bolha de chat pode parecer com isso:
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, "Hello world!")
end)