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:
Na janela Explorer, selecione BubbleChatConfiguration em TextChatService .
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
Propiedad | Descripción | Por defecto |
---|---|---|
BackgroundColor3 | Color de fondo de las burbujas en Color3 . | [250、250、250] |
FontFace | Font del texto de la burbuja. | GothamMedium |
TextColor3 | Color del texto de burbuja en Color3 . | [57, 59, 61] |
TextSize | Tamaño del texto de burbuja. | 16 años |
Comportamento
Propiedad | Descripción | Por defecto |
---|---|---|
Enabled | Indica si el chat de burbujas está habilitado en la experiencia. | true (verificado) |
AdorneeName | Nombre 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 |
BubbleDuration | Tiempo antes de que una burbuja se apague, en segundos. | 30 años |
BubblesSpacing | Espacio vertical entre burbujas apiladas, en píxeles. | 6 veces |
LocalPlayerStudsOffset | Si 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) |
MaxDistance | Distancia máxima de la cámara que se muestran las burbujas. | cien |
MinimizeDistance | Distancia de la cámara cuando las burbujas se convierten en una sola burbuja con un ellipsis ( **** ) para indicar chatter. | 40 años |
VerticalStudsOffset | Espacio extra entre las burbujas y su adornee, en studs. | 0 pontos |
MaxBubbles | Nú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:
- Passe o mouse sobre BubbleChatConfiguration e clique no botão ⊕.
- 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").BubbleChatConfigurationBubbleChatConfiguration.TailVisible = falseBubbleChatConfiguration.TextSize = 24BubbleChatConfiguration.TextColor3 = Color3.fromRGB(220, 50, 50)BubbleChatConfiguration.FontFace = Font.fromEnum(Enum.Font.LuckiestGuy)local UICorner = BubbleChatConfiguration:FindFirstChildOfClass("UICorner")if not UICorner thenUICorner = Instance.new("UICorner")UICorner.Parent = BubbleChatConfigurationendUICorner.CornerRadius = UDim.new(0, 0)local ImageLabel = BubbleChatConfiguration:FindFirstChildOfClass("ImageLabel")if not ImageLabel thenImageLabel = Instance.new("ImageLabel")ImageLabel.Parent = BubbleChatConfigurationendImageLabel.Image = "rbxassetid://6733332557"ImageLabel.ScaleType = Enum.ScaleType.SliceImageLabel.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
Propiedad | Descripción | Por defecto |
---|---|---|
Image | ID de activo de la imagen de fondo de burbuja. | |
ImageColor3 | Tono de color de la imagen de fondo de burbuja en Color3 . | [255, 255, 255] |
ImageRectOffset | Desplazamiento del área de imagen que se mostrará desde la parte superior izquierda en píxeles. | (0, 0) |
ImageRectSize | Tamañ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) |
ScaleType | El tipo de escala para renderizar la imagen cuando su tamaño es diferente del tamaño absoluto de la burbuja. | Stretch |
SliceCenter | Corta 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) |
SliceScale | Relació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 |
TileSize | Tamaño de los azulejos de la imagen. Solo aplicable cuando configuras ScaleType como Tile . | (1, 0, 1, 0) |
UIGradient
Propiedad | Descripción | Por defecto |
---|---|---|
Enabled | Indica si el gradiente de fondo de burbuja está habilitado. | false (no verificado) |
Color | Color del gradiente de fondo. | [250、250、250] |
Offset | Traducción escalar del gradiente desde el centro de la burbuja. | (0, 0) |
Rotation | La rotación en sentido horario, en grados, del gradiente comienza de izquierda a derecha. | 0 pontos |
Transparency | Transparencia del gradiente de fondo. | (1, 0) |
UICorner
Propiedad | Descripción | Por defecto |
---|---|---|
CornerRadius | Radio de la forma de la esquina de la burbuja en píxeles. | (0, 12) |
UIGradient
Propiedad | Descripción | Por defecto |
---|---|---|
PaddingBottom | Relleno en la parte inferior. | UDim.new(0,8) |
PaddingLeft | >Padding a la izquierda. | UDim.new(0,8) |
PaddingRight | Relleno a la derecha. | UDim.new(0,8) |
PaddingTop | Relleno 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:
Propiedad | Descripción | Por defecto |
---|---|---|
BackgroundColor3 | Color de fondo de las burbujas en Color3 . | (250, 250, 250) |
BackgroundTransparency | Transparencia de fondo de burbujas. | 0,1 |
FontFace | Font del texto de la burbuja. | GothamMedium |
TextColor3 | Color del texto de burbuja en Color3 . | [57, 59, 61] |
TextSize | Tamañ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)