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:
Nella finestra Explorer, seleziona BubbleChatConfiguration sotto TextChatService .
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à | Descrizione | Predefinito |
---|---|---|
BackgroundColor3 | Colore di sfondo delle bolle in Color3 . | [250, 250, 250] |
FontFace | Font del testo a bolle. | BuilderSansMedium |
TextColor3 | Colore del testo a bolle in Color3 . | [57, 59, 61] |
TextSize | Dimensione 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.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://6733332557"bubbleImageLabel.ScaleType = Enum.ScaleType.SlicebubbleImageLabel.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à | Descrizione | Predefinito |
---|---|---|
Image | ID risorsa dell'immagine di sfondo della bolle. | |
ImageColor3 | Tintura del colore della immagine di sfondo della bolle in Color3 . | [255, 255, 255] |
ImageRectOffset | Spostamento dell'area dell'immagine da mostrare in pixel dalla parte superiore sinistra. | (0, 0) |
ImageRectSize | Dimensione dell'area dell'immagine da visualizzare in pixel. Per visualizzare l'intera immagine, imposta qualsiasi dimensione su 0 . | (0, 0) |
ScaleType | Il tipo di scala per rendere l'immagine quando la sua dimensione è diversa dalla dimensione assoluta della bolle. | Stretch |
SliceCenter | Taglia i limiti dell'immagine se l'immagine è un'immagine a 9 strati. Applicabile solo quando impostate ScaleType come Slice . | (0, 0, 0, 0) |
SliceScale | Scala la relazione delle dimensioni delle edge se l'immagine è un'immagine a 9 livelli. Applicabile solo quando impostate ScaleType come Slice . | 1 |
TileSize | Dimensione 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à | Descrizione | Predefinito |
---|---|---|
BackgroundColor3 | Colore di sfondo delle bolle in Color3 . | (250, 250, 250) |
BackgroundTransparency | Trasparenza di sfondamento delle bolle. | 0.1 |
FontFace | Font del testo a bolle. | BuilderSansMedium |
TextColor3 | Colore del testo a bolle in Color3 . | [57, 59, 61] |
TextSize | Dimensione 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)