TextChatService ile, kullanıcı avatarlarının ve NPC'lerin üzerinde özelleştirilebilir konuşma balonları görüntülemek için balon sohbetini kullanabilirsiniz.Konuşma balonu, deneyiminizi daha görsel olarak etkili hale getirebilir ve kullanıcıların mesajları ve konuşmacılarını bir bağlantısal olarak alakalı bir şekilde kolayca tanımlamalarına yardımcı olabilir.Bu özellik, kullanıcıların içeriğe odaklanması gereken deneyimlerde özellikle yararlıdır, böylece diğerleriyle daha az rahatsız edici bir şekilde iletişim kurarlar.
Balon sohbetini etkinleştir
Deneyiminizde balon sohbetini etkinleştirmek için:
Araştırıcı penceresinde, altında BubbleChatConfiguration seçin TextChatService .
Özellikler penceresinde, BubbleChatConfiguration.Enabled kontrol kutusunu kontrol edin.
Balon özelleştirme
Balon sohbeti etkinleştirdikten sonra, deneyim temanıza uyacak şekilde sohbet balonlarının görünümünü ve davranışını özelleştirebilirsiniz.Özellikler penceresini BubbleChatConfiguration kullanarak temel değişiklikleri, metin rengi ve boşluk gibi, veya balon arka plan görüntüleri ve diğer görsel ayar için gelişmiş özelleştirme uygulayın.

Alternatif olarak, tüm özelleştirme ayarlarınızla birlikte LocalScript ekleyin StarterPlayerScripts .Bu, motorun yürütüm sırasında özelleştirmelerinizi uygulamasına izin verir, Studio'daki ayarları geçersiz kılar.Kullanıcılar belirli olayları veya koşulları tetiklediğinde sohbet balonlarına özel efektler eklemek için yararlıdır.
Temel özelleştirme
Aşağıdaki tablo, yaygın balon sohbet özelleştirme özelliklerini gösterir. Tam bir özelleştirme özellikleri listesi için bakın BubbleChatConfiguration .
Özellik | Açıklama | Varsayılan |
---|---|---|
BackgroundColor3 | Color3 'de balonların arka plan rengi. | [250, 250, 250] |
FontFace | Font balon yazısından. | BuilderSansMedium |
TextColor3 | Kabarcık metin rengi Color3 'de. | [57, 59, 61] |
TextSize | Balon metninin boyutu. | 16 |
Gelişmiş özelleştirme
Kabarcığınızın gelişmiş özelleştirilmesi için, kabarcığın görünümünün belirli yönlerini çocuklar olarak BubbleChatConfiguration içeren UI nesnelerini ekleyin, şunlar dahil:
- ImageLabel arka plan görüntü ayarları için.
- UIGradient arka plan pencere ayarları için.
- UICorner balonların köşe şekli için.
- UIPadding metin ve balon kenarları arasındaki yastık alanı için, ebeveynin normal boyutuna göre.
Bu nesneleri ekledikten sonra, sohbet balonlarına uygulanan bu nesnelerin özelliklerini gelişmiş balon özelleştirme için değiştirebilirsiniz.Aşağıdaki örnek LocalScript balonlara arka plan görüntüsü ve keskin köşeler ekler:
Gelişmiş Balon Özelleştirme
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://109157529833093"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 değiştirici çocuklarının geçerli özelleştirme özellikleriyle birlikte açıklanır:
Özellik | Açıklama | Varsayılan |
---|---|---|
Image | Balon arka plan resminin varlık kimliği. | |
ImageColor3 | Kabarcık arka plan görüntüsünün renk tonu Color3 . | [255, 255, 255] |
ImageRectOffset | Görüntü alanının sol üstten piksellere gösterilmesi için ofseti. | (0, 0) |
ImageRectSize | Pikselde görüntülenecek görüntü alanının boyutu. Tüm görüntüyü görüntülemek için herhangi bir boyutu 0 olarak ayarlayın. | (0, 0) |
ScaleType | Resmin boyutu balonun mutlak boyutundan farklı olduğunda görüntü oluşturmak için ölçek türü. | Stretch |
SliceCenter | Resim 9 parçalı bir resim olduğunda resim sınırlarını dilimleyin. Yalnızca olarak ayarladığınızda uygulanabilir. | (0, 0, 0, 0) |
SliceScale | Resim 9 dilimli bir resim olduğunda, dilim kenarlarının ölçek oranı. Sadece olarak ayarladığınızda uygulanabilir. | 1 |
TileSize | Görüntünün kare boyutu. Yalnızca olarak ayarladığınızda uygulanabilir. | (1, 0, 1, 0) |
Her balon özelleştirme
Genel ayarlarınızı geçersiz kılmak için belirli koşullara dayalı olarak sohbet balonu davranışlarını bireysel olarak stilize edip değiştirebilirsiniz.Örneğin, NPC'leri ve kullanıcıları ayırt etmek için sohbet balonlarını kullanabilir, kritik sağlık durumunu vurgulayabilir ve önceden tanımlanmış anahtar kelimelerle mesajlara özel efektler uygulayabilirsiniz.
Her balonun özelleştirilmesini ayarlamak için, LocalScript kullanarak bir istemci tarafına BubbleChatMessageProperties ekleyin, ki bu, eşleşen özellikleri BubbleChatConfiguration geçersiz kılar ve her bir balonun nasıl özelleştirileceğini belirtmek için TextChatService.OnBubbleAdded geri çağrısı kullanın.Geri çağrı, sana TextChatMessage özellik ile birlikte adorne ve özellikleri de sağlar, böylece kullanıcılarla ilgili özelliklere, sohbet metin içeriğine, kullanıcı karakter özelliklerine ve tanımlamak istediğin herhangi bir özel koşula dayalı olarak özelleştirme uygulayabilirsin.
Her balon için özelleştirme için aşağıdaki temel özelleştirme özellikleri mevcuttur:
Özellik | Açıklama | Varsayılan |
---|---|---|
BackgroundColor3 | Color3 'de balonların arka plan rengi. | (250, 250, 250) |
BackgroundTransparency | Balonların arka plan transparansı. | 0.1 |
FontFace | Font balon yazısından. | BuilderSansMedium |
TextColor3 | Kabarcık metin rengi Color3 'de. | [57, 59, 61] |
TextSize | Balon metninin boyutu. | 16 |
Aşağıdaki örnek, bir sohbet mesaj göndericisinin IsVIP özniteliğine sahip olup olmadığını kontrol ederek VIP kullanıcıların sohbet balonlarına özel bir görünüm ekler:
VIP balonları
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Deneyime yeni bir sohbet balonu eklenirken olay işleyicisi için
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Sohbet mesajının bir TextSource'a (gönderen) bağlı olup olmadığını kontrol edin
if message.TextSource then
-- Sohbet balonunu özelleştirmek için yeni bir BubbleChatMessageProperties instansı oluşturun
local bubbleProperties = Instance.new("BubbleChatMessageProperties")
-- Sohbet mesajını gönderen kullanıcıyı, kullanıcı kimliğine dayanarak 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 mevcuttur.Genel balonlar için gelişmiş özelleştirmeye benzer şekilde, BubbleChatMessageProperties 'in çocukları olarak özelleştirmek istediğiniz örnekleri ekleyin.Aşağıdaki örnek, düşük sağlık durumuna sahip kullanıcıların sohbet balonlarına özel bir gradyen efekti ekler ve sohbet mesaj göndericilerinin Humanoid.Health özelliklerini kontrol ederek:
Düşük Sağlık Balonları
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Deneyime yeni bir sohbet balonu eklenirken olay işleyicisi için
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Sohbet mesajının bir TextSource'a (gönderen) bağlı olup olmadığını kontrol edin
if message.TextSource then
-- Sohbet mesajını gönderen kullanıcıyı Kullanıcı Kimliğini kullanarak alın
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
-- Kullanıcının karakterindeki insansı bulun
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid and humanoid.Health < 25 then
-- Sohbet balonunu özelleştirmek için yeni bir BubbleChatMessageProperties instansı oluşturun
local bubbleProperties :BubbleChatMessageProperties = Instance.new("BubbleChatMessageProperties")
-- Düşük sağlık koşulu 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)
-- Gradyeni özelleştirmek için bir çocuk olarak bir UIGradient ekleyin
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
Balonları manuel olarak görüntüle
Oyuncular bir mesaj göndermediğinde, NPC'ler gibi, bir sohbet balonu görüntülemek isteyebilirsiniz.Bir sohbet balonunu manuel olarak görüntülemek için TextChatService:DisplayBubble() yöntemini kullanın.
Bu balonların özelleştirilmesi, Oyuncuların Mesajları ilettiğinde otomatik olarak gösterilen balonların özelleştirilmesi ile aynıdır TextChatService.OnBubbleAdded geri çağrısı kullanarak .
NPC balonları
Oyuncu olmayan karakterler (NPC) için sohbet balonlarını görüntülemek için TextChatService:DisplayBubble(character, message) , NPC karakteri ve mesajının parametre olarak çağrılmasıyla.Bu balonlar, herhangi bir diğer sohbet balonu gibi TextChatService.OnBubbleAdded geri çağrı kullanılarak özelleştirilebilir.
TextChatService:DisplayBubble() sadece istemci tarafındaki kodlarda çalışır, bu yüzden Script ile RunContext``Enum.RunContext.Client veya bir LocalScriptuygun bir kapsayıcıda , örneğin StarterPlayerScripts gibi kullanın.Bir NPC'ye bir ProximityPrompt eklediyseniz, sohbet balonunu görüntüleyen bir kod şöyle görünebilir:
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, "Hello world!")
end)