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ı |
---|---|
RBXGeneral | Genel |
RBXSystem | Genel (tek bir sekme içinde birleştirilmiş RBXGeneral ) |
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 | 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 şeffaflığı. | 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 depolanmış) 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 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.Örneğin, sistem mesajlarını, hata mesajlarını veya deneyiminizdeki belirli sistemlerden gelen mesajları tanımlamak için Metadata kullanabilirsiniz.
Sitemiz Sistem
Bir sistem mesajını yerel oyuncuya göndermek için, örneğin halka açık bir adres sisteminden "konuşma", oyuncunun görüntü adından önce bir tercih ile DisplaySystemMessage() kanaldan çağrınız RBXGeneral .
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)

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)
