Mit TextChatService können Sie Sprechblasen verwenden, um anpassbare Sprechblasen über Benutzer-Avataren und NPCs anzuzeigen. Sprechblasen können Ihr Spiel visuell immersiver gestalten und den Benutzern helfen, Nachrichten und ihre Sprecher auf kontextuell relevante Weise leicht zu identifizieren. Diese Funktion ist besonders nützlich für Spiele, in denen Benutzer sich auf den Inhalt konzentrieren müssen, während sie gleichzeitig mit anderen auf weniger aufdringliche Weise kommunizieren.
Aktivieren der Sprechblasen
Um die Sprechblasen in Ihrem Spiel zu aktivieren:
Wählen Sie im Explorer-Fenster BubbleChatConfiguration unter TextChatService aus.

Überprüfen Sie im Properties-Fenster das Kontrollkästchen BubbleChatConfiguration.Enabled.

Anpassung der Sprechblasen
Nachdem Sie die Sprechblasen aktiviert haben, können Sie das Aussehen und Verhalten Ihrer Sprechblasen an das Thema Ihres Spiels anpassen. Verwenden Sie das Properties-Fenster von BubbleChatConfiguration für einfache Änderungen wie Textfarbe und Abstände oder implementieren Sie erweiterte Anpassungen für Hintergrundbilder der Sprechblasen und andere visuelle Anpassungen.

Alternativ fügen Sie ein LocalScript in StarterPlayerScripts mit all Ihren Anpassungseinstellungen hinzu. Dies ermöglicht es der Engine, Ihre Anpassungen zur Laufzeit anzuwenden und die Einstellungen in Studio zu überschreiben. Es ist nützlich, um spezielle Effekte zu Sprechblasen hinzuzufügen, wenn Benutzer bestimmte Ereignisse oder Bedingungen auslösen.
Einfache Anpassung
Die folgende Tabelle zeigt gängige Anpassungseigenschaften für Sprechblasen. Für eine vollständige Liste der Anpassungseigenschaften siehe BubbleChatConfiguration.
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
| BackgroundColor3 | Hintergrundfarbe der Sprechblasen in Color3. | [250, 250, 250] |
| FontFace | Font des Sprechblasen-Textes. | BuilderSansMedium |
| TextColor3 | Farbe des Sprechblasen-Texts in Color3. | [57, 59, 61] |
| TextSize | Größe des Sprechblasen-Texts. | 16 |
Erweiterte Anpassung
Für eine erweiterte Anpassung Ihrer Sprechblasen fügen Sie UI-Objekte hinzu, die bestimmte Aspekte des Sprechblasen-Aussehens darstellen, als Kinder unter BubbleChatConfiguration, einschließlich:
- ImageLabel für Hintergrundbild-Einstellungen.
- UIGradient für Hintergrundgradient-Einstellungen.
- UICorner für die Eckenform der Sprechblasen.
- UIPadding für den Abstand zwischen dem Text und den Rändern der Sprechblasen, relativ zur normalen Größe des Elternteils.
Nachdem Sie diese Objekte hinzugefügt haben, können Sie Eigenschaften dieser Objekte ändern, die auf Sprechblasen anwendbar sind, für eine erweiterte Sprechblasen-Anpassung. Das folgende Beispiel LocalScript fügt Sprechblasen einen Hintergrundbild und scharfe Ecken hinzu:
Erweiterte Sprechblasen-Anpassunglocal 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

Die folgenden Tabellen zeigen die verfügbaren GuiObject und Erscheinungsbilds-Modifikatoren Kinder zusammen mit ihren gültigen Anpassungseigenschaften:
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
| Image | Asset-ID des Hintergrundbildes der Sprechblase. | |
| ImageColor3 | Farbton des Hintergrundbildes der Sprechblase in Color3. | [255, 255, 255] |
| ImageRectOffset | Verschiebung des Bildbereichs, der von oben links in Pixeln angezeigt werden soll. | (0, 0) |
| ImageRectSize | Größe des Bildbereichs, der in Pixeln angezeigt werden soll. Um das gesamte Bild anzuzeigen, setzen Sie eine der Dimensionen auf 0. | (0, 0) |
| ScaleType | Der Skalierungstyp zum Rendern des Bildes, wenn seine Größe von der absoluten Größe der Sprechblase abweicht. | Stretch |
| SliceCenter | Schnittgrenzen des Bildes, wenn das Bild ein 9-geteiltes Bild ist. Nur anwendbar, wenn Sie ScaleType auf Slice setzen. | (0, 0, 0, 0) |
| SliceScale | Skalierungsverhältnis der Schnittkanten, wenn das Bild ein 9-geteiltes Bild ist. Nur anwendbar, wenn Sie ScaleType auf Slice setzen. | 1 |
| TileSize | Fliesen Größe des Bildes. Nur anwendbar, wenn Sie ScaleType auf Tile setzen. | (1, 0, 1, 0) |
Individuelle Anpassung der Sprechblasen
Sie können die Stile und Verhaltensweisen der Sprechblasen basierend auf bestimmten Bedingungen individuell anpassen, um Ihre allgemeinen Einstellungen zu überschreiben. Beispielsweise können Sie Sprechblasen verwenden, um NPCs und Benutzer zu unterscheiden, kritische Gesundheitszustände hervorzuheben und Sondereffekte auf Nachrichten mit vordefinierten Schlüsselwörtern anzuwenden.
Um eine individuelle Anpassung der Sprechblasen festzulegen, fügen Sie ein clientseitiges LocalScript mithilfe von BubbleChatMessageProperties hinzu, das entsprechende Eigenschaften von BubbleChatConfiguration überschreibt, sowie den TextChatService.OnBubbleAdded Callback, um zu spezifizieren, wie jede Sprechblase angepasst werden soll. Der Callback liefert Ihnen die TextChatMessage-Eigenschaft sowie den Anhefter, sodass Sie die Anpassung basierend auf Attributen, die mit Benutzern, dem Chat-Textinhalt, Charaktereigenschaften und allen speziellen Bedingungen verbunden sind, die Sie definieren möchten, anwenden können.
Die folgenden grundlegenden Anpassungseigenschaften stehen für die individuelle Anpassung von Sprechblasen zur Verfügung:
| Eigenschaft | Beschreibung | Standard |
|---|---|---|
| BackgroundColor3 | Hintergrundfarbe der Sprechblasen in Color3. | (250, 250, 250) |
| BackgroundTransparency | Hintergrundtransparenz der Sprechblasen. | 0.1 |
| FontFace | Font des Sprechblasen-Texts. | BuilderSansMedium |
| TextColor3 | Farbe des Sprechblasen-Texts in Color3. | [57, 59, 61] |
| TextSize | Größe des Sprechblasen-Texts. | 16 |
Das folgende Beispiel fügt VIP-Benutzern eine spezielle Erscheinung zu ihren Sprechblasen hinzu, indem es überprüft, ob ein Absender einer Chatnachricht das Attribut IsVIP hat:
VIP-Sprechblasen
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Ereignishandler für wenn eine neue Sprechblase zum Spiel hinzugefügt wird
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Überprüfen, ob die Chatnachricht eine TextSource (Absender) hat
if message.TextSource then
-- Erstellen Sie eine neue Instanz von BubbleChatMessageProperties zur Anpassung der Sprechblase
local bubbleProperties = Instance.new("BubbleChatMessageProperties")
-- Den Benutzer abrufen, der die Chatnachricht basierend auf seiner UserId gesendet hat
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
if player:GetAttribute("IsVIP") then
-- Wenn der Spieler ein VIP ist, die Eigenschaften der Sprechblase anpassen
bubbleProperties.TextColor3 = Color3.fromHex("#F5CD30")
bubbleProperties.BackgroundColor3 = Color3.fromRGB(25, 27, 29)
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.PermanentMarker)
end
return bubbleProperties
end
end
Alle erweiterten Anpassungsmöglichkeiten sind auch für die individuelle Anpassung der Sprechblasen verfügbar. Ähnlich wie bei der erweiterten Anpassung für allgemeine Sprechblasen, fügen Sie Instanzen, die Sie anpassen möchten, als Kinder von BubbleChatMessageProperties hinzu. Das folgende Beispiel fügt einer Sprechblase von Benutzern mit einem niedrigen Gesundheitszustand einen speziellen Gradienteffekt zusammen mit anderen Eigenschaften hinzu, indem es die Humanoid.Health-Eigenschaft der Charaktere der Absender von Chatnachrichten überprüft:
Sprechblasen mit niedrigem Gesundheitszustand
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Ereignishandler für wenn eine neue Sprechblase zum Spiel hinzugefügt wird
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Überprüfen, ob die Chatnachricht eine TextSource (Absender) hat
if message.TextSource then
-- Den Benutzer abrufen, der die Chatnachricht mithilfe seiner UserId gesendet hat
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
-- Den Humanoid im Charakter des Benutzers suchen
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid and humanoid.Health < 25 then
-- Eine neue Instanz von BubbleChatMessageProperties erstellen, um die Sprechblase anzupassen
local bubbleProperties :BubbleChatMessageProperties = Instance.new("BubbleChatMessageProperties")
-- Die Eigenschaften der Sprechblase für den Zustand mit niedrigem Gesundheitszustand anpassen
bubbleProperties.BackgroundColor3 = Color3.fromRGB(245, 245, 245)
bubbleProperties.TextColor3 = Color3.fromRGB(234, 51, 96)
bubbleProperties.TextSize = 20
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.DenkOne)
-- Ein UIGradient als Kind hinzufügen, um den Gradienten anzupassen
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
Manuelles Anzeigen von Sprechblasen
Sie möchten möglicherweise eine Sprechblase anzeigen, wenn Spieler keine Nachricht gesendet haben, z. B. bei NPCs. Verwenden Sie die Methode TextChatService:DisplayBubble(), um manuell eine Sprechblase anzuzeigen.
Die Anpassung dieser Sprechblasen ist die gleiche wie die Anpassung der Sprechblasen, die automatisch angezeigt werden, wenn Spieler Nachrichten über Textkanäle senden, mithilfe des TextChatService.OnBubbleAdded-Callbacks.
NPC-Sprechblasen
Zeigen Sie Sprechblasen für nicht spielbare Charaktere (NPCs) an, indem Sie TextChatService:DisplayBubble(character, message) aufrufen, wobei der NPC-Charakter und die Nachricht als Parameter übergeben werden. Diese Sprechblasen sind anpassbar, indem das TextChatService.OnBubbleAdded-Callback genauso wie bei jeder anderen Sprechblase verwendet wird.
TextChatService:DisplayBubble() funktioniert nur in clientseitigen Skripten, stellen Sie also sicher, dass Sie ein Script mit RunContext auf Enum.RunContext.Client gesetzt oder ein LocalScript in einem geeigneten Container, wie z. B. StarterPlayerScripts, verwenden. Wenn Sie eine ProximityPrompt zu einem NPC hinzufügen, könnte ein Skript zum Anzeigen einer Sprechblase folgendermaßen aussehen:
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, "Hallo Welt!")
end)