Balon sohbetini özelleştir

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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:

  1. Araştırıcı penceresinde, altında BubbleChatConfiguration seçin TextChatService .

  2. Ö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 .

ÖzellikAçıklamaVarsayılan
BackgroundColor3Color3 'de balonların arka plan rengi.[250, 250, 250]
FontFaceFont balon yazısından.BuilderSansMedium
TextColor3Kabarcık metin rengi Color3 'de.[57, 59, 61]
TextSizeBalon 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.BubbleChatConfiguration
bubbleChatConfiguration.TailVisible = false
bubbleChatConfiguration.TextColor3 = Color3.fromRGB(220, 50, 50)
bubbleChatConfiguration.FontFace = Font.fromEnum(Enum.Font.LuckiestGuy)
local bubbleUICorner = bubbleChatConfiguration:FindFirstChildOfClass("UICorner")
if not bubbleUICorner then
bubbleUICorner = Instance.new("UICorner")
bubbleUICorner.Parent = bubbleChatConfiguration
end
bubbleUICorner.CornerRadius = UDim.new(0, 0)
local bubbleUIPadding = bubbleChatConfiguration:FindFirstChildOfClass("UIPadding")
if not bubbleUIPadding then
bubbleUIPadding = Instance.new("UIPadding")
bubbleUIPadding.Parent = bubbleChatConfiguration
end
bubbleUIPadding.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 then
bubbleImageLabel = Instance.new("ImageLabel")
bubbleImageLabel.Parent = bubbleChatConfiguration
end
bubbleImageLabel.Image = "rbxassetid://109157529833093"
bubbleImageLabel.ScaleType = Enum.ScaleType.Slice
bubbleImageLabel.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:

ÖzellikAçıklamaVarsayılan
ImageBalon arka plan resminin varlık kimliği.
ImageColor3Kabarcık arka plan görüntüsünün renk tonu Color3 .[255, 255, 255]
ImageRectOffsetGörüntü alanının sol üstten piksellere gösterilmesi için ofseti.(0, 0)
ImageRectSizePikselde 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)
ScaleTypeResmin boyutu balonun mutlak boyutundan farklı olduğunda görüntü oluşturmak için ölçek türü.Stretch
SliceCenterResim 9 parçalı bir resim olduğunda resim sınırlarını dilimleyin. Yalnızca olarak ayarladığınızda uygulanabilir.(0, 0, 0, 0)
SliceScaleResim 9 dilimli bir resim olduğunda, dilim kenarlarının ölçek oranı. Sadece olarak ayarladığınızda uygulanabilir.1
TileSizeGö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:

ÖzellikAçıklamaVarsayılan
BackgroundColor3Color3 'de balonların arka plan rengi.(250, 250, 250)
BackgroundTransparencyBalonların arka plan transparansı.0.1
FontFaceFont balon yazısından.BuilderSansMedium
TextColor3Kabarcık metin rengi Color3 'de.[57, 59, 61]
TextSizeBalon 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)