Conversa de chat/conversa

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Com o sistema de bate-papo de texto em experiência, você pode suportar bate-papo de bolha para exibir bolhas de bate-papo de fala personalizáveis acima dos avatares e NPCs dos usuários. O bate-papo de bolha pode tornar sua experiência mais imersiva e ajudar os usuários a identificar facilmente mensagens e seus alto-falantes de forma contextual. Essa função é especialmente útil para experiências em que os usuários precisam se concentrar no conteúdo enquanto se comunicam com os outros de uma maneira menos intrusiva.

Configuração do Bubble Chat

Para ativar o Bubble Chat na sua experiência:

  1. Na janela Explorer, selecione BubbleChatConfiguration em TextChatService .

  2. Na janela Propriedades, marque a caixa de seleção Ativado sob a categoria Comportamento .

Personalização de bolhas

Depois de habilitar o bate-papo de bolhas, você pode personalizar a aparência e o comportamento das 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. Para personalização avançada, como adicionar imagens de fundo para bolhas, adicione objetos de interface de usuário como filhos de BubbleChatConfiguration e modifique esses objetos.

Alternativamente, você pode adicionar um LocalScript em StarterPlayerScripts com todas as suas configurações de personalização. Isso permite que o mecanismo aplique suas personalizações durante o tempo de execução, substituindo as configurações no Studio. É útil para adicionar efeitos especiais para bolhas de bate-papo quando os usuários acionam certos eventos ou condições.

Personalização Básica

A tabela a seguir mostra as propriedades comuns de personalização do chat de bolha. Para uma lista completa de propriedades de personalização, consulte BubbleChatConfiguration .

Aparência

PropiedadDescripciónPor defecto
BackgroundColor3Color de fondo de las burbujas en Color3 .[250、250、250]
FontFaceFont del texto de la burbuja.GothamMedium
TextColor3Color del texto de burbuja en Color3 .[57, 59, 61]
TextSizeTamaño del texto de burbuja.16 años

Comportamento

PropiedadDescripciónPor defecto
EnabledIndica si el chat de burbujas está habilitado en la experiencia.true (verificado)
AdorneeNameNombre de cadena de la parte del cuerpo o Attachment a la que se unen las burbujas; si existen múltiples instancias del mismo nombre, el sistema se une a la primera instancia encontrada.Parte de Raíz de Humanoide
BubbleDurationTiempo antes de que una burbuja se apague, en segundos.30 años
BubblesSpacingEspacio vertical entre burbujas apiladas, en píxeles.6 veces
LocalPlayerStudsOffsetSi está decorado para el jugador local, el desplazamiento de burbujas en studs de su adornee, en relación con la orientación de la cámara ( Vector3 ).(0, 0, 0)
MaxDistanceDistancia máxima de la cámara que se muestran las burbujas.cien
MinimizeDistanceDistancia de la cámara cuando las burbujas se convierten en una sola burbuja con un ellipsis ( **** ) para indicar chatter.40 años
VerticalStudsOffsetEspacio extra entre las burbujas y su adornee, en studs.0 pontos
MaxBubblesNúmero máximo de burbujas mostradas antes de que las burbujas más antiguas desaparezcan.3 veces

Personalização Avançada

Para personalização avançada da sua bolha, adicione objetos de interface de usuário representando certos aspectos da aparência da bolha como crianças em 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 o texto e as bordas da bolha, em relação ao tamanho normal do pai.

Para adicionar esses objetos como filhos de BubbleChatConfiguration , você pode adicionar um script ou usar a interface de usuário do Studio diretamente:

  1. Passe o mouse sobre BubbleChatConfiguration e clique no botão ⊕.
  2. Selecione o objeto da lista.

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 do lado do cliente LocalScript adiciona uma imagem de fundo e cantos afiados às bolhas:

Personalização Avançada de Bolhas

local BubbleChatConfiguration = game:GetService("TextChatService").BubbleChatConfiguration
BubbleChatConfiguration.TailVisible = false
BubbleChatConfiguration.TextSize = 24
BubbleChatConfiguration.TextColor3 = Color3.fromRGB(220, 50, 50)
BubbleChatConfiguration.FontFace = Font.fromEnum(Enum.Font.LuckiestGuy)
local UICorner = BubbleChatConfiguration:FindFirstChildOfClass("UICorner")
if not UICorner then
UICorner = Instance.new("UICorner")
UICorner.Parent = BubbleChatConfiguration
end
UICorner.CornerRadius = UDim.new(0, 0)
local ImageLabel = BubbleChatConfiguration:FindFirstChildOfClass("ImageLabel")
if not ImageLabel then
ImageLabel = Instance.new("ImageLabel")
ImageLabel.Parent = BubbleChatConfiguration
end
ImageLabel.Image = "rbxassetid://6733332557"
ImageLabel.ScaleType = Enum.ScaleType.Slice
ImageLabel.SliceCenter = Rect.new(40, 40, 360, 160)
ImageLabel.SliceScale = 0.5

As seguintes tabelas incluem todas as propriedades disponíveis para personalização:

Etiqueta de Imagem

PropiedadDescripciónPor defecto
ImageID de activo de la imagen de fondo de burbuja.
ImageColor3Tono de color de la imagen de fondo de burbuja en Color3 .[255, 255, 255]
ImageRectOffsetDesplazamiento del área de imagen que se mostrará desde la parte superior izquierda en píxeles.(0, 0)
ImageRectSizeTamaño del área de imagen que se mostrará en píxeles. Para mostrar la imagen completa, configure cualquiera de las dimensiones en 0.(0, 0)
ScaleTypeEl tipo de escala para renderizar la imagen cuando su tamaño es diferente del tamaño absoluto de la burbuja.Stretch
SliceCenterCorta los límites de la imagen si la imagen es una imagen de 9 cortes. Solo aplicable cuando configuras ScaleType como Slice .(0, 0, 0, 0)
SliceScaleRelación de escala de los bordes de la rebanada si la imagen es una imagen de 9 rebanadas. Solo aplicable cuando configuras ScaleType como Slice .1 vez
TileSizeTamaño de los azulejos de la imagen. Solo aplicable cuando configuras ScaleType como Tile .(1, 0, 1, 0)

UIGradient

PropiedadDescripciónPor defecto
EnabledIndica si el gradiente de fondo de burbuja está habilitado.false (no verificado)
ColorColor del gradiente de fondo.[250、250、250]
OffsetTraducción escalar del gradiente desde el centro de la burbuja.(0, 0)
RotationLa rotación en sentido horario, en grados, del gradiente comienza de izquierda a derecha.0 pontos
TransparencyTransparencia del gradiente de fondo.(1, 0)

UICorner

PropiedadDescripciónPor defecto
CornerRadiusRadio de la forma de la esquina de la burbuja en píxeles.(0, 12)

UIGradient

PropiedadDescripciónPor defecto
PaddingBottomRelleno en la parte inferior.UDim.new(0,8)
PaddingLeft>Padding a la izquierda.UDim.new(0,8)
PaddingRightRelleno a la derecha.UDim.new(0,8)
PaddingTopRelleno en la parte superior.UDim.new(0,8)

Personalização por bolha

Você pode estilizar e modificar individualmente os comportamentos da bolha de bate-papo com base em condições específicas que substituem suas configurações gerais. Por exemplo, você pode usar bolhas de bate-papo para diferenciar NPCs e usuários, destacar status de saúde crítico e aplicar efeitos especiais a mensagens com palavras-chave pré-definidas.

Para definir a personalização por bolha, adicione um lado do cliente LocalScript usando BubbleChatMessageProperties , que substitui as propriedades correspondentes de BubbleChatConfiguration , e o TextChatService.OnBubbleAdded callback para especificar como personalizar cada bolha. O callback fornece a você a propriedade TextChatMessage , bem como o adornee, para que você possa aplicar a personalização com base nos atributos associados aos usuários, no conteúdo do texto do chat, nas propriedades do personagem do usuário e em quaisquer condições especiais que você quiser definir.

O exemplo a seguir adiciona uma aparência especial às bolhas de chat dos usuários VIP verificando se um remetente de mensagem de chat tem o atributo IsVIP:

Bolhas VIP

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Gerenciador de eventos para quando uma nova bolha de chat é adicionada à experiência
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Verifique se a mensagem de chat tem uma fonte de texto (remetente) 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 é um 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

Opções Disponíveis

As seguintes propriedades básicas de personalização estão disponíveis para personalização por bolha:

PropiedadDescripciónPor defecto
BackgroundColor3Color de fondo de las burbujas en Color3 .(250, 250, 250)
BackgroundTransparencyTransparencia de fondo de burbujas.0,1
FontFaceFont del texto de la burbuja.GothamMedium
TextColor3Color del texto de burbuja en Color3 .[57, 59, 61]
TextSizeTamaño del texto de burbuja.16 años

Todas as opções de personalização avançada 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 exemplo a seguir adiciona um efeito de gradiente especial, juntamente com outras propriedades, para conversar com bolhas de usuários com baixo status de saúde, verificando a Humanoid.Health propriedade dos personagens dos remetentes da mensagem de chat:

Bolhas de Vida Baixas

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Gerenciador de eventos para quando uma nova bolha de chat é adicionada à experiência
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Verifique se a mensagem de chat tem uma fonte de texto (remetente) 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 baixo estado de saúde
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 criança 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.Parent = bubbleProperties
uiGradient.Rotation = 90
return bubbleProperties
end
end
end

Bolhas de NPC

Você pode exibir bolhas de bate-papo para personagens não jogadores (NPCs) chamando TextChatService:DisplayBubble() , com o personagem NPC e a mensagem como parâmetros. Essas bolhas são personalizáveis usando o TextChatService.OnBubbleAdded callback, assim como qualquer outra bolha de bate-papo.

TextChatService:DisplayBubble() só funciona em scripts do lado do cliente, então certifique-se de usar um LocalScript em um recipiente apropriado , como StarterPlayerScripts . Se você anexar um ProximityPrompt a um NPC, um script para exibir uma bolha de bate-papo pode parecer assim:


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)