Deneyim içi metin sohbeti sistemi, TextChatService, oyuncuların canlı deneyimlerde kolayca iletişim kurmasına ve sosyalleşmesine izin verir.Varsayılan metin sohbetini desteklemenin yanı sıra, ön uç kullanıcı arayüzünü özelleştirebilirsiniz özelleştirebilirsiniz.
Sohbet pencere yapılandırması
Genel sohbet penceresi şunlardan oluşur:
- Sohbet penceresi
- Giriş çubuğu
- Kanal sekmeleri (isteğe bağlı)

Kanal sekmeleri varsayılan olarak devre dışıdır ve her bileşen Studio'da veya kodlama aracılığıyla açılıp kapatılabilir:
Gezgin penceresinde, TextChatService dalını genişletin ve ChatWindowConfiguration , ChatInputBarConfiguration veya ChannelTabsConfiguration seçin.Sonra Özellikler penceresinde bileşeni etkinleştirin veya devre dışı bırakın.

When ChannelTabsConfiguration etkinleştirildiğinde, her varsayılan TextChannel seçeneği aşağıdaki tabloda belirtildiği gibi bir sekmede görünür.Ayrıca, her özel TextChannel , kanalın Name özelliklerine karşılık gelen bir sekme oluşturur.
Varsayılan kanal | Seçenek adı |
---|---|
RBXGenel | Genel |
RBXSistem | Genel ( RBXGenel ile tek bir sekmeye birleştirildi) |
RBXTakım | Takım |
RBXSuspişi | Diğer oyuncunun kullanıcı adı |
Pencere görünümü
Genel sohbet penceresinin görünümü ChatWindowConfiguration aracılığıyla özelleştirilebilir.

Özellik | Açıklama | Varsayılan |
---|---|---|
BackgroundColor3 | Color3 sohbet penceresinin arka plan rengi. | [25, 27, 29] |
BackgroundTransparency | Sohbet penceresinin arka planının transparanlığı. | 0.3 |
FontFace | Font sohbet penceresi metninden. | BuilderSansMedium |
TextColor3 | Color3 sohbet penceresi metninden. | [255, 255, 255] |
TextSize | Sohbet pencere metninin boyutu. | 14 |
TextStrokeColor3 | Color3 soğuk çekme için sohbet pencere metni için vuruş. | [0, 0, 0] |
TextStrokeTransparency | Sohbet pencere metni için çizginin saydamlığı. | 0.5 |
HorizontalAlignment | Sohbet penceresinin yatay uyumu. | Left |
VerticalAlignment | Sohbet penceresinin dikey uyumu. | Top |
HeightScale | Sohbet penceresinin ekran boyutuna göre yüksekliği. | 1 |
WidthScale | Sohbet penceresinin ekran boyutuna göre genişliği ölçeği. | 1 |
Giriş çubuğu görünümü
Sohbet giriş çubuğunun görünümü ChatInputBarConfiguration aracılığıyla özelleştirilebilir.

Özellik | Açıklama | Varsayılan |
---|---|---|
BackgroundColor3 | Color3 sohbet giriş çubuğunun arka plan rengi. | [25, 27, 29] |
BackgroundTransparency | Sohbet giriş çubuğunun arka planının transparanlığı. | 0.2 |
FontFace | Font sohbet giriş metninin. | BuilderSansMedium |
PlaceholderColor3 | Color3 yer tutucu sohbet giriş metninin. | [178, 178, 178] |
TextColor3 | Color3 oyuncunun girdiği sohbet metninin. | [255, 255, 255] |
TextSize | Sohbet giriş metninin boyutu. | 14 |
TextStrokeColor3 | Color3 sohbet giriş metninin çizgi rengi. | [0, 0, 0] |
TextStrokeTransparency | Sohbet giriş metni için çizginin saydamlığı. | 0.5 |
AutocompleteEnabled | Metin sohbet sisteminin emojiler ve komutlar için otomatik tamamla seçenekleri gösterip göstermediğiEmojiler, beyaz boşluk karakterlerinden sonra : yazılarak otomatik olarak tamamlanır ve komutlar beyaz boşluk karakterlerinden sonra / yazılarak otomatik olarak tamamlanır. | true |
KeyboardKeyCode | Ekstra anahtar oyuncular varsayılan sohbet giriş çubuğuna odaklanmak için basabilir. | Slash |
Kanal sekmelerinin görünümü
kanal sekmelerinin görünümü ChannelTabsConfiguration.

Özellik | Açıklama | Varsayılan |
---|---|---|
BackgroundColor3 | Color3 kanal sekmelerinin arka plan rengi. | [25, 27, 29] |
BackgroundTransparency | Kanal sekmelerinin arka planının transparanlığı. | 0 |
HoverBackgroundColor3 | Color3 üzerlerine gezinirken sekmelerin arka plan rengi. | [125, 125, 125] |
FontFace | Font kanal sekmelerindeki metin için. | BuilderSansBold |
TextColor3 | Color3 seçili olmayan bir sekmedeki metin. | [175, 175, 175] |
SelectedTabTextColor3 | Color3 seçilmiş bir sekmedeki metin. | [255, 255, 255] |
TextSize | Kanal sekmelerindeki metinin boyutu. | 18 |
TextStrokeColor3 | Color3 kanal sekmelerindeki metinin çizgi rengi. | [0, 0, 0] |
TextStrokeTransparency | Kanal sekmelerindeki metin için çizginin saydamlığı. | 1 |
Mesajları özelleştirin
Mevcut UI'yi geçmeden ChatWindowMessageProperties ve TextChatService.OnChatWindowAdded geri çağrılarını kullanarak sohbet mesajlarının görünümünü ve ön eklerini özelleştirebilirsiniz.Özelleştirme seçenekleri, deneyimin temasına uyacak şekilde sohbet mesajlarının görünümünü değiştirmenize izin verir ve ayrıca ön ekleri renklendirerek veya sohbet etiketleri ekleyerek farklı kullanıcı gruplarından mesajları sıralayabilir veya vurgulayabilirsiniz.
Renkli kullanıcı isimleri
Bir kullanıcı sohbet mesajı gönderdiğinde, ön ek bölümü olarak DisplayName görüntülenir.Varsayılan olarak, her kullanıcının adı onların Player.TeamColor göre renklendirilir, ancak ChatWindowMessageProperties ve OnChatWindowAdded kullanarak sohbet isimlerinin renklerini değiştirebilirsiniz.Aşağıdaki her kullanıcıya önceden belirlenmiş bir renk atar, bir RGB renk tablosundan rastgele seçerek.

YerelScript - Rastgele Kullanıcı Adı Renkleri
local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local nameColors = {
Color3.fromRGB(255, 0, 0),
Color3.fromRGB(0, 255, 0),
Color3.fromRGB(0, 0, 255),
Color3.fromRGB(255, 255, 0),
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
local index: number = (textSource.UserId % #nameColors) + 1
local randomColor: Color3 = nameColors[index]
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
properties.PrefixTextProperties.TextColor3 = randomColor
end
return properties
end
Ayrıca renk ve saydamlık gradyanlarını renk mesajı önlerine UIGradient kullanarak uygulayabilirsiniz.

Dügradan Kullanıcı Adı Renkleri
local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end
Zengin metin özelleştirme
Zengin metin mesaj biçimlendirme etiketleri mesajları biçimlendirmek için kullanılabilir, mesajın çok spesifik bölümlerine biçim vermek istiyorsanız yararlıdır.Zengin metiningradyenleri desteklemediğini unutmayın, ancak aşağıdaki kod örneği, kullanıcı adını (TextChatMessage.PrefixText içinde saklanmış) mesaj vücuduna taşımanın ve ardından sadece adın bölümüne zengin metin etiketlemesi uygulamanın nasıl olduğunu gösteriyor.

Zengin Metin Özelleştirme
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
if message.TextSource then
properties.PrefixText = "[VIP]"
properties.Text = string.format("<font color='#00ffff'>%s</font>", message.PrefixText) .. " " .. message.Text
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end
Oyuncu olmayan kaynaklardan mesaj gönder
Bazen, sohbet penceresinde halka açık bir adres sisteminden veya halka açık bir karakterden "konuşma" gibi oyuncu olmayan diyaloğu göstermek isteyebilirsiniz.
Sitemiz Sistem
Yerel oyuncuya bir sistem mesajı göndermek için, oyuncunun görünen adönce bir tercih ile DisplaySystemMessage() öntanımlı RBXGenel kanalından arayın.
Müşteri Kodu
local Players = game:GetService("Players")local TextChatService = game:GetService("TextChatService")local player = Players.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal PREFIX = "[Guide] Welcome "-- Oyuncuya görüntü adı eklenmiş olarak "sistem mesajı" göndergeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)

Sistem mesajlarının görünümünü özelleştirmenin daha ayrıntılı bir rehberi için, Sistem mesajlarını özelleştirme bakın.
Varsayılan sistem mesajları
When TextChatService.CreateDefaultTextChannels is true , bir varsayılan metin kanalının biri RBXSystem kanalıdır.Varsayılan sohbet senaryoları bu kanalda otomatik olarak sistem mesajlarını görüntüler.Bu mesajların görünümünü TextChannel.OnIncomingMessage geri çağrısı kullanarak özelleştirebilirsiniz.
Sohbet sistemi tarafından otomatik olarak yayınlanan sistem mesajlarını özelleştirmek veya değiştirmek isteyebilirsiniz.Varsayılan sistem mesajları kullanıcılar için yerelleştirildiğinden, görünümlerini özelleştirmek istiyorsanız TextChatMessage.Metadatametin sohbet geri çağrılarına referans vermelisiniz, eğer görünümlerini özelleştirmek istiyorsanız.
Aşağıda, sohbet sistemi tarafından yayınlanan varsayılan sistem mesajlarının referansı bulunmaktadır:
Meta veriler | Açıklama |
---|---|
Roblox.ChatTranslation.ChatWindow.Sistem Mesajı | Sistemin oyuncu için sohbet mesajlarını çevirebileceğini gösterir |
Roblox.Notification.Friend.Katıldı | Oyuncunun arkadaşlarından biri deneyime katıldığında görüntülenir |
Roblox.Mesaj Durumu.Uyarı.Fırtına kontrol edildi | Oyuncunun SohbetMesajı gönderdiğinde, Sunucu tarafından sınırlandırılan oranı gösterildiğinde |
Roblox.MessageStatus.Warning.TextFilterFailed | Oyuncunun gönderdiği TextChatMessage gösterilemediğinde bir Metin Filtre sorunu nedeniyle gösterildi |
Roblox.Mesaj Durumu.Uyarı.Geçersiz Özellik Ayarları | Oyuncunun gizlilik ayarları bir TextChatMessage göndermesini engellediğinde görüntülenir |
Roblox.MessageStatus.Warning.MessageÇok Uzun Mesaj | Oyuncu çok uzun bir içerikle bir TextChatMessage gönderdiğinde görüntülenir |
Roblox.MessageStatus.Warning.Unknown'un | Sistem bilinmeyen bir nedenden dolayı Oyuncunun Sohbet Mesajını göndermeyi başaramadığında görüntülenir |
Roblox.Help.Info | RBXHelpCommand TextChatCommand'dan yanıtı görüntüler |
Roblox.Version.Info | RBXVersionCommand TextChatCommand'dan yanıtı görüntüler |
Roblox.Team.Success.NowInTeam'da | Oyuncunun takımı değiştiğinde görüntülenir |
Roblox.Team.Error.CannotTeamChatIfNotInTeam İngilizce | Oyuncu bir Team üzerinde olmadan RBXTeamCommandTextChatCommand'u tetiklediğinde görüntülenir |
Roblox.Whisper.Info.Başarılı | Oyuncu başarıyla bir Whisper konuşması başlattığında görüntülenir |
Roblox.Whisper.Welcome.Gönderilen | Bir Whisper Metin Kanalına girildiğinde görüntülenir |
Roblox.Whisper.Error.CannotWhisperToSelf'in teknik belgeleri | RBXWhisperCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Whisper.Error.TargetDoesNotExist hedefi yok | RBXWhisperCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Whisper.Error.TooManyMatches'ınız | RBXWhisperCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Whisper.Error.Unknown'ın | RBXWhisperCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Emote.Error.DoesNotExist İçindekiler | RBXEmoteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Emote.Error.KullanıcıEmoteleriAktifDeğil | RBXEmoteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Emote.Error.Geçici olarak kullanılamıyor | RBXEmoteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Emote.Error.NotSupported [Desteklenmiyor] | RBXEmoteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Emote.Error.R15'e Geç | RBXEmoteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Emote.Error.AnimasyonOynama | RBXEmoteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Mute.Error.OyuncuBulunamadı | RBXMuteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Mute.Error.ÇokluMaçlar | RBXMuteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Mute.Error.Kendini susturamıyor | RBXMuteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Mute.Info.Başarılı | RBXMuteCommand TextChatCommand'dan bir başarılı yanıt |
Roblox.Unmute.Error.OyuncuBulunamadı | RBXUnmuteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Unmute.Error.ÇokluMaçlar | RBXUnmuteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Unmute.Error.Kendini susturamıyor | RBXUnmuteCommand TextChatCommand'dan bir hata yanıtı |
Roblox.Unmute.Info.Başarılı | RBXUnmuteCommand TextChatCommand'dan bir başarılı yanıt |
NPC/objektif
Ayrıca oyuncu olmayan diyaloğu stilize edebilir ve mesajların 3D dünyadaki bir NPC veya nesneden geldiği gibi görünmesi için sohbet balonları ekleyebilirsiniz.
Müşteri Kodu
local TextChatService = game:GetService("TextChatService")
local Workspace = game:GetService("Workspace")
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
TextChatService.OnIncomingMessage = function(textChatMessage: TextChatMessage)
local properties = Instance.new("TextChatMessageProperties")
-- Metadataya sahip sistem mesajlarını kontrol et
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Mesajı bir oyuncu tarafından gönderilmiş gibi görünmesi için ön ek ekleyin
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Balon sohbeti ekleyin
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "Welcome! I will be your guide."
local speakerName = "Ancient Knight"
generalChannel:DisplaySystemMessage(message, speakerName)
