Sohbet penceresini özelleştirme

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

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ı)
Metin sohbet penceresinin temel bileşenleri.

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 kanalSekme adı
RBXGeneralGenel
RBXSystemGenel (RBXGeneral ile birleştirilmiştir)
RBXTeamTakım
RBXWhisperDiğer oyuncunun kullanıcı adı

Pencere görünümü

Genel sohbet penceresinin görünümü ChatWindowConfiguration aracılığıyla özelleştirilebilir.

Explorer hiyerarşisindeki ChatWindowConfiguration örneği.
ÖzellikAçıklamaVarsayılan
BackgroundColor3Sohbet penceresinin Color3 arka plan rengi.[25, 27, 29]
BackgroundTransparencySohbet penceresinin arka planının şeffaflığı.0.3
EnabledVarsayılan sohbet penceresinin gösterilip gösterilmeyeceği. Gizlemek için false olarak ayarlayın.true
FontFaceSohbet penceresi metninin Font'u.BuilderSansMedium
TextColor3Sohbet penceresi metninin Color3'ü.[255, 255, 255]
TextSizeSohbet penceresi metninin boyutu.14
TextStrokeColor3Sohbet penceresi metni için çerçeve renginin Color3'ü.[0, 0, 0]
TextStrokeTransparencySohbet penceresi metni için çerçeve şeffaflığı.0.5
HorizontalAlignmentSohbet penceresinin yatay hizalaması.Left
VerticalAlignmentSohbet penceresinin dikey hizalaması.Top
HeightScaleSohbet penceresinin ekran boyutuna göre yükseklik ölçeği.1
WidthScaleSohbet 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.

Explorer hiyerarşisindeki ChatInputBarConfiguration örneği.
ÖzellikAçıklamaVarsayılan
BackgroundColor3Sohbet girdi çubuğunun Color3 arka plan rengi.[25, 27, 29]
BackgroundTransparencySohbet girdi çubuğunun arka planının şeffaflığı.0.2
FontFaceSohbet girdi metninin Font'u.BuilderSansMedium
PlaceholderColor3Placeholder sohbet girdi metninin Color3'ü.[178, 178, 178]
TextColor3Oyuncu tarafından girilen sohbet girdi metninin Color3'ü.[255, 255, 255]
TextSizeSohbet girdi metninin boyutu.14
TextStrokeColor3Sohbet girdi metninin çerçeve rengi Color3'ü.[0, 0, 0]
TextStrokeTransparencySohbet girdi metni için çerçeve şeffaflığı.0.5
AutocompleteEnabledMetin 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
KeyboardKeyCodeVarsayı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.

Explorer hiyerarşisindeki ChannelTabsConfiguration örneği.
ÖzellikAçıklamaVarsayılan
BackgroundColor3Kanal sekmelerinin Color3 arka plan rengi.[25, 27, 29]
BackgroundTransparencyKanal sekmelerinin arka planının şeffaflığı.0
HoverBackgroundColor3Üzerine gelindiğinde sekmelerin arka plan rengi Color3'ü.[125, 125, 125]
FontFaceKanal sekmelerindeki metin için Font.BuilderSansBold
TextColor3Seçilmemiş bir sekmedeki metnin Color3'ü.[175, 175, 175]
SelectedTabTextColor3Seçilen bir sekmedeki metnin Color3'ü.[255, 255, 255]
TextSizeKanal sekmelerindeki metnin boyutu.18
TextStrokeColor3Kanal sekmelerindeki metin için çerçeve rengi Color3'ü.[0, 0, 0]
TextStrokeTransparencyKanal 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.

Sohbet penceresinde renklendirilmiş kullanıcı adı.
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.

Sohbet penceresinde gradyan kullanıcı adı.
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.

Sohbet penceresinde kullanıcı adının zengin metin özelleştirmesi.
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ği

local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local player = Players.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Rehber] Hoş geldin "
-- "sistem mesajını" oyuncuya gönder, görüntüleme adı eklendi
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Sohbet penceresinde basit bir sistem mesajını gösteren bir resim.

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)
Bir şövalye heykeli NPC'sinin sohbet penceresine bir sohbet mesajı yaydığı ve başının üzerinde bir sohbet baloncuğu bulunan bir görüntü.
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.