With the in-experience text chat system, you can support ubble chat to display customizable speech chat bubbles above user avatars and NPCs. Bubble chat can make your experience more visually immersive and help users easily identify messages and their speakers in a contextually relevant manner. This feature is especially useful for experiences where users need to focus on the content in the meantime communicating with others in a less obtrusive way.
Konuşma balonlarını Sohbet
Bubble chat'i deneyiminizde etkinleştirmek için:
In the Explorer window, select BubbleChatConfiguration under TextChatService .
Özellikler Penceresinde, Enabled kontrol kutusunu kontrol edin.
Balon Özelleştirmesi
Balon sohbetini etkinleştirdikten sonra, sohbet balonlarınızın görünümünü ve davranışınızı deneyim temanızla eşleştirmek için özelleştirebilirsiniz. Özellikler penceresinden BubbleChatConfiguration için önbelleştirme değişiklikleri, renk ve boşluk gibi temel
Alternatif olarak, tüm özelleştirme ayarlarınızla LocalScript ile bir StarterPlayerScripts ekleyebilirsiniz. Bu, motorunuzu çalışma sırasında özelleştirmelerinizi uygulayabilir, Studio'daki ayarların üzerinde çalışır. Kullanıcılar bazı etkinleştirme ayarllarınızı etkinleş
Temel Özelleştirme
Aşağıdaki tabloda yaygın balon sohbeti özelleştirme özellikleri gösterilmiştir. For a full list of customization properties, see BubbleChatConfiguration .
Özellik | Açıklama | Varsayılan |
---|---|---|
BackgroundColor3 | Balonların arka plan rengi Color3 . | [250, 250, 250] |
FontFace | Font | BuilderSansMedium |
TextColor3 | Color3 içinde balon metni rengi. | [57, 59, 61] |
TextSize | Baloncuk metinin boyutu. | 16 |
Gelişmiş Özelleştirme
Balonunuzun gelişmiş özelleştirmesi için, balonunuzun görünümünün belirli yönlerini temsil eden UI nesneleri ekleyin, bunlar arasında:
- ImageLabel arka plan görüntü ayarları için.
- UIGradient için yüksek kayış ayarları.
- UICorner kabarcıkların köşe şeklindeki kullanımı için.
- UIPadding ile, metin ve balon kenarları arasındaki yastıklama alanına, ebeveynin normal büyüklüğüne göre yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yastıklama alanına yast
Bu nesneleri ekledikten sonra, sohbet balonları için gelişmiş balon özelleştirmesi için bu nesnelerin özelliklerini değiştirebilirsiniz. Aşağıdaki örnek LocalScript , bir arka plan görüntüsü ve kenarları balonlar için ekler:
Gelişmiş Balon Özelleştirmesi
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
Aşağıdaki tablolar, mevcut GuiObject ve görünüm modifiyesi çocuklarının geçerli özelleştirme özellikleriyle birlikte mevcut çocuklarının görünümünü açıklar:
Özellik | Açıklama | Varsayılan |
---|---|---|
Image | Balon arka plan görüntüsünün ID'si. | |
ImageColor3 | Datatype.Color3 ile balon arka planının rengi | [255, 255, 255] |
ImageRectOffset | Pikselde görüntülenen görüntü alanının üst kısmındaki bozulma. | (0, 0) |
ImageRectSize | Görüntülenen görüntü alanının boyutu. Tüm görüntüyü görmek için herhangi bir boyutu 0 olarak ayarla. | (0, 0) |
ScaleType | Görüntünün küresel boyutundan farklı olduğu için görüntüyü render etmek için ölçek tipi. | Stretch |
SliceCenter | Eğer görüntü bir 9-sliced görüntü ise görüntünün sınırlarını kesiyor. Sadece ScaleType olarak ayarladığınızda uygulanır. | (0, 0, 0, 0) |
SliceScale | Eğer görüntü 9 dilimli bir görüntüyse dilimlerin ölçeğini ölçeği kullanıyorsa. Yalnızca ScaleType olarak Slice olarak uygulanır. | 1 |
TileSize | Görüntünün büyüklüğünü ayarlar. Sadece ScaleType 'i Tile olarak ayarladığınızda geçerlidir. | (1, 0, 1, 0) |
Konfigürasyon başına küme özelleştirmesi
Genel ayarlarınızın üstesinden gelen özel koşullara dayanarak sohbet balonu davranışlarınızı kişiselleştirebilirsiniz. Örneğin, NPC'leri ve kullanıcıları ayırt etmek için sohbet balonlarınızı kullanabilirsiniz, ön ayarlı kelimeleri vurgulayabilirsiniz ve özel etkileri mesajlara uygulayabilirsiniz.
Per-bubble özelleştirmesini ayarlamak için, LocalScript kullanarak bir BubbleChatMessageProperties , which overrides the matching properties of
Aşağıdaki temel özelleştirme özellikleri per-bubble özelleştirmesi için mevcut:
Özellik | Açıklama | Varsayılan |
---|---|---|
BackgroundColor3 | Balonların arka plan rengi Color3 . | (250, 250, 250) |
BackgroundTransparency | Balonların arka planının透明. | 0.1 |
FontFace | Font | BuilderSansMedium |
TextColor3 | Color3 içinde balon metni rengi. | [57, 59, 61] |
TextSize | Baloncuk metinin boyutu. | 16 |
Aşağıdaki örnek, bir sohbet mesajı göndericisinin IsVIP özelliğine sahip olup olmadığını kontrol ederek sohbet mesajlarının balonlarına özel bir görünüm ekler:
VIP balonları
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Yeni bir sohbet balonu deneyime eklenildiğinde etkinliğin işleyişi için bir etkinlik eşleyici
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Sohbet mesajının bir TextSource (gönderici) ile bağlantılı olup olmadığını kontrol edin
if message.TextSource then
-- Sohbet balonunu özelleştirmek için yeni bir BubbleChatMessageProperties instansı oluştur
local bubbleProperties = Instance.new("BubbleChatMessageProperties")
-- Kullanıcının sohbet mesajını UserId'ine gönderen kullanıcıyı alın
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
if player:GetAttribute("IsVIP") then
-- Oyuncu bir VIP ise, sohbet balonu özelliklerini özelleştirin
bubbleProperties.TextColor3 = Color3.fromHex("#F5CD30")
bubbleProperties.BackgroundColor3 = Color3.fromRGB(25, 27, 29)
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.PermanentMarker)
end
return bubbleProperties
end
end
Tüm gelişmiş özelleştirme seçenekleri per-bubble özelleştirme için mevcut. Genel küm özelleştirmeleri için gelişmiş özelleştirmeye benzer, BubbleChatMessageProperties 'in çocukları olarak etkileşim balonlarını özelleştirmek için istemeleri ekler. Aş
Düşük Sağlık Balonları
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Yeni bir sohbet balonu deneyime eklenildiğinde etkinliğin işleyişi için bir etkinlik eşleyici
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Sohbet mesajının bir TextSource (gönderici) ile bağlantılı olup olmadığını kontrol edin
if message.TextSource then
-- Kullanıcının sohbet mesajını gönderdiği kimliğini kullanarak onu al
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
-- Kullanıcının karakterindeki insanoid'i bul
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid and humanoid.Health < 25 then
-- Sohbet balonunu özelleştirmek için yeni bir BubbleChatMessageProperties instansı oluştur
local bubbleProperties :BubbleChatMessageProperties = Instance.new("BubbleChatMessageProperties")
-- Düşük sağlık durumu için sohbet balonu özelliklerini özelleştir
bubbleProperties.BackgroundColor3 = Color3.fromRGB(245, 245, 245)
bubbleProperties.TextColor3 = Color3.fromRGB(234, 51, 96)
bubbleProperties.TextSize = 20
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.DenkOne)
-- Gradient'ı özelleştirmek için bir çocuk olarak UIGradient ekleyin
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
NPC balonları
NPC'ler için sohbet balonlarını göstermek için Class.TextChatService:DisplayBubble() , NPC karakteri ve mesajının parçaları olarak çağırın, bu balonlar kişiselleştirilebilir olarak kullanılabilir. Bu balonlar Class.TextChatService.OnBubbleAdded çağrısını kullanarak herhangi bir diğer sohbet balonu gibi özelleş
TextChatService:DisplayBubble() sadece client-side kodlar için çalışır, bu yüzden Class.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)