in-game text chat sistemi, TextChatService tarafından desteklenmektedir ve oyuncuların canlı oyunlarda kolayca iletişim kurmasına ve sosyalleşmesine olanak tanır. Varsayılan metin sohbetini desteklemenin yanı sıra, ön uç kullanıcı arayüzünü özelleştirebilirsiniz.
Sohbet penceresi yapılandırması
Genel sohbet penceresi şu bileşenlerden oluşur:
- Sohbet penceresi
- Girdi çubuğu
- Kanal sekmeleri (isteğe bağlı)

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

ChannelTabsConfiguration etkinleştirildiğinde, her varsayılan TextChannel bir sekme olarak görünür, aşağıdaki tabloda belirtildiği gibi. Ayrıca, her özel TextChannel, kanalın Name özelliğiyle ilgili bir sekme oluşturur.
| Varsayılan kanal | Sekme adı |
|---|---|
| RBXGeneral | Genel |
| RBXSystem | Genel (RBXGeneral ile birleştirilmiştir) |
| RBXTeam | Takım |
| RBXWhisper | 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 | Sohbet penceresinin Color3 arka plan rengi. | [25, 27, 29] |
| BackgroundTransparency | Sohbet penceresinin arka planının şeffaflığı. | 0.3 |
| Enabled | Varsayılan sohbet penceresinin gösterilip gösterilmeyeceği. Gizlemek için false olarak ayarlayın. | true |
| FontFace | Sohbet penceresi metninin Font'u. | BuilderSansMedium |
| TextColor3 | Sohbet penceresi metninin Color3'ü. | [255, 255, 255] |
| TextSize | Sohbet penceresi metninin boyutu. | 14 |
| TextStrokeColor3 | Sohbet penceresi metni için çerçeve renginin Color3'ü. | [0, 0, 0] |
| TextStrokeTransparency | Sohbet penceresi metni için çerçeve şeffaflığı. | 0.5 |
| HorizontalAlignment | Sohbet penceresinin yatay hizalaması. | Left |
| VerticalAlignment | Sohbet penceresinin dikey hizalaması. | Top |
| HeightScale | Sohbet penceresinin ekran boyutuna göre yükseklik ölçeği. | 1 |
| WidthScale | Sohbet penceresinin ekran boyutuna göre genişlik ölçeği. | 1 |
Girdi çubuğu görünümü
Sohbet girdi çubuğunun görünümü ChatInputBarConfiguration aracılığıyla özelleştirilebilir.

| Özellik | Açıklama | Varsayılan |
|---|---|---|
| BackgroundColor3 | Sohbet girdi çubuğunun Color3 arka plan rengi. | [25, 27, 29] |
| BackgroundTransparency | Sohbet girdi çubuğunun arka planının şeffaflığı. | 0.2 |
| FontFace | Sohbet girdi metninin Font'u. | BuilderSansMedium |
| PlaceholderColor3 | Placeholder sohbet girdi metninin Color3'ü. | [178, 178, 178] |
| TextColor3 | Oyuncu tarafından girilen sohbet girdi metninin Color3'ü. | [255, 255, 255] |
| TextSize | Sohbet girdi metninin boyutu. | 14 |
| TextStrokeColor3 | Sohbet girdi metninin çerçeve rengi Color3'ü. | [0, 0, 0] |
| TextStrokeTransparency | Sohbet girdi metni için çerçeve şeffaflığı. | 0.5 |
| AutocompleteEnabled | Metin sohbet sisteminin emoji ve komutlar için otomatik tamamlama seçenekleri gösterip göstermeyeceği. Emojiler : ardından boşluk karakteri olmadan diğer karakterler yazarak otomatik tamamlanır, komutlar ise / yazarak otomatik tamamlanır. | true |
| KeyboardKeyCode | Varsayılan sohbet girdi çubuğuna odaklanmak için oyuncuların basabileceği ek bir tuş. | Slash |
Kanal sekmeleri görünümü
Kanal sekmeleri görünümü ChannelTabsConfiguration aracılığıyla özelleştirilebilir.

| Özellik | Açıklama | Varsayılan |
|---|---|---|
| BackgroundColor3 | Kanal sekmelerinin Color3 arka plan rengi. | [25, 27, 29] |
| BackgroundTransparency | Kanal sekmelerinin arka planının şeffaflığı. | 0 |
| HoverBackgroundColor3 | Üzerine gelindiğinde sekmelerin arka plan rengi Color3'ü. | [125, 125, 125] |
| FontFace | Kanal sekmelerindeki metin için Font. | BuilderSansBold |
| TextColor3 | Seçilmemiş bir sekmedeki metnin Color3'ü. | [175, 175, 175] |
| SelectedTabTextColor3 | Seçilen bir sekmedeki metnin Color3'ü. | [255, 255, 255] |
| TextSize | Kanal sekmelerindeki metnin boyutu. | 18 |
| TextStrokeColor3 | Kanal sekmelerindeki metin için çerçeve rengi Color3'ü. | [0, 0, 0] |
| TextStrokeTransparency | Kanal sekmelerindeki metin için çerçeve şeffaflığı. | 1 |
Mesajları özelleştirin
Sohbet mesajı gövde ve ön eklerinin görünümünü ChatWindowMessageProperties ve TextChatService.OnChatWindowAdded geri çağırmaları kullanarak mevcut UI'yi geçersiz kılmadan özelleştirebilirsiniz. Özelleştirme seçenekleri, sohbet mesajlarının görünümünü oyununuzun temasına uyacak şekilde değiştirebilirsiniz ve mesajları farklı kullanıcı gruplarından ayırarak öne çıkmasını sağlamak için önekleri renklendirebilir veya sohbet etiketleri ekleyebilirsiniz.
Kullanıcı adlarını renklendirin
Bir kullanıcı sohbet mesajı gönderdiğinde, DisplayName mesajın ön ek kısmında görüntülenir. Varsayılan olarak, her kullanıcının adı Player.TeamColor'a göre renklendirilmiştir ancak sohbet adlarının renklerini ChatWindowMessageProperties ve OnChatWindowAdded kullanarak değiştirebilirsiniz. Aşağıdaki LocalScript, StarterPlayerScripts içinde her kullanıcıya önceden belirlenmiş bir renk atar ve RGB renkler tablosundan rastgele seçer.

LocalScript - 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
Renk ve şeffaflık gradyanlarını, UIGradient kullanarak mesaj öneklerini renklendirmek için de uygulayabilirsiniz.

Gradyan 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 font renk etiketleri sohbet mesajlarını formatlamak için kullanılabilir, bu da özellikle mesajın belirli kısımlarına format uygulamak istediğinizde faydalıdır. Zengin metin gradyanları desteklemez, ancak aşağıdaki kod örneği, kullanıcı adını ( TextChatMessage.PrefixText içinde saklanır) mesaj gövdesine taşıyarak yalnızca ad bölümüne zengin metin etiketlemesi uygulayabileceğinizi gösterir.

Zengin Metin Özelleştirmesi
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 dışı kaynaklardan gelen mesajlar
TextChatService.CreateDefaultTextChannels true olduğunda, varsayılan metin kanallarından biri RBXSystem kanaladır. Varsayılan sohbet betikleri sistem mesajlarını bu kanalda otomatik olarak görüntüler. Bu mesajların görünümünü TextChannel.OnIncomingMessage geri çağırması kullanarak özelleştirebilirsiniz.
Sohbet sistemi tarafından otomatik olarak yayımlanan sistem mesajlarını özelleştirmek veya değiştirmek isteyebilirsiniz. Varsayılan sistem mesajları kullanıcılar için yerelleştirildiğinden, bunların görünümünü özelleştirmek istiyorsanız, metin sohbet geri çağırmalarınızda TextChatMessage.Metadata ile referans vermelisiniz. Örneğin, Metadata kullanarak sistem mesajlarını, hata mesajlarını veya oyununuzdaki belirli sistemlerden gelen mesajları tanımlayabilirsiniz.
Sistem
Bir sistem mesajını yerel oyuncuya iletmek için, örneğin "konuşma" gibi bir etkinizden, varsayılan RBXGeneral kanalından DisplaySystemMessage() çağrısını gönderin ve oyuncunun görüntüleme adından önce bir önek ekleyin.
İstemci Betiğilocal Players = game:GetService("Players")local TextChatService = game:GetService("TextChatService")local player = Players.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal PREFIX = "[Rehber] Hoş geldin "-- "sistem mesajını" oyuncuya gönder, görüntüleme adı eklendigeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)

NPC/nesne
Ayrıca, oyuncu dışı diyalogları stilize edebilir ve bir NPC veya nesne gibi görünmesi için sohbet baloncukları ekleyebilirsiniz.
İstemci Betiği
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")
-- Metadata içeren sistem mesajlarını kontrol et
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Mesaja oyuncu tarafından gönderilmiş gibi görünmesi için önek ekle
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Balon sohbeti ekle
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "Hoş geldin! Ben rehberin olacağım."
local speakerName = "Eski Şövalye"
generalChannel:DisplaySystemMessage(message, speakerName)
