Sohbet penceresini özelleştirin

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

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ı)
Core components of the text chat window.

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 kanalSeç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.

ChatWindowConfiguration instance in Explorer hierarchy.
ÖzellikAçıklamaVarsayılan
BackgroundColor3Color3 sohbet penceresinin arka plan rengi.[25, 27, 29]
BackgroundTransparencySohbet penceresinin arka planının transparanlığı.0.3
FontFaceFont sohbet penceresi metninden.BuilderSansMedium
TextColor3Color3 sohbet penceresi metninden.[255, 255, 255]
TextSizeSohbet pencere metninin boyutu.14
TextStrokeColor3Color3 soğuk çekme için sohbet pencere metni için vuruş.[0, 0, 0]
TextStrokeTransparencySohbet pencere metni için çizginin saydamlığı.0.5
HorizontalAlignmentSohbet penceresinin yatay uyumu.Left
VerticalAlignmentSohbet penceresinin dikey uyumu.Top
HeightScaleSohbet penceresinin ekran boyutuna göre yüksekliği.1
WidthScaleSohbet 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.

ChatInputBarConfiguration instance in Explorer hierarchy.
ÖzellikAçıklamaVarsayılan
BackgroundColor3Color3 sohbet giriş çubuğunun arka plan rengi.[25, 27, 29]
BackgroundTransparencySohbet giriş çubuğunun arka planının transparanlığı.0.2
FontFaceFont sohbet giriş metninin.BuilderSansMedium
PlaceholderColor3Color3 yer tutucu sohbet giriş metninin.[178, 178, 178]
TextColor3Color3 oyuncunun girdiği sohbet metninin.[255, 255, 255]
TextSizeSohbet giriş metninin boyutu.14
TextStrokeColor3Color3 sohbet giriş metninin çizgi rengi.[0, 0, 0]
TextStrokeTransparencySohbet giriş metni için çizginin saydamlığı.0.5
AutocompleteEnabledMetin 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
KeyboardKeyCodeEkstra 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.

ChannelTabsConfiguration instance in Explorer hierarchy.
ÖzellikAçıklamaVarsayılan
BackgroundColor3Color3 kanal sekmelerinin arka plan rengi.[25, 27, 29]
BackgroundTransparencyKanal sekmelerinin arka planının transparanlığı.0
HoverBackgroundColor3Color3 üzerlerine gezinirken sekmelerin arka plan rengi.[125, 125, 125]
FontFaceFont kanal sekmelerindeki metin için.BuilderSansBold
TextColor3Color3 seçili olmayan bir sekmedeki metin.[175, 175, 175]
SelectedTabTextColor3Color3 seçilmiş bir sekmedeki metin.[255, 255, 255]
TextSizeKanal sekmelerindeki metinin boyutu.18
TextStrokeColor3Color3 kanal sekmelerindeki metinin çizgi rengi.[0, 0, 0]
TextStrokeTransparencyKanal 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.

Colored user name in the chat window.
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.

Gradient user name in the chat window.
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.

Rich text customization of user name in the chat window.
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.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Guide] Welcome "
-- Oyuncuya görüntü adı eklenmiş olarak "sistem mesajı" gönder
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

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 verilerAçı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 edildiOyuncunun SohbetMesajı gönderdiğinde, Sunucu tarafından sınırlandırılan oranı gösterildiğinde
Roblox.MessageStatus.Warning.TextFilterFailedOyuncunun 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 MesajOyuncu çok uzun bir içerikle bir TextChatMessage gönderdiğinde görüntülenir
Roblox.MessageStatus.Warning.Unknown'unSistem bilinmeyen bir nedenden dolayı Oyuncunun Sohbet Mesajını göndermeyi başaramadığında görüntülenir
Roblox.Help.InfoRBXHelpCommand TextChatCommand'dan yanıtı görüntüler
Roblox.Version.InfoRBXVersionCommand TextChatCommand'dan yanıtı görüntüler
Roblox.Team.Success.NowInTeam'daOyuncunun takımı değiştiğinde görüntülenir
Roblox.Team.Error.CannotTeamChatIfNotInTeam İngilizceOyuncu 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önderilenBir Whisper Metin Kanalına girildiğinde görüntülenir
Roblox.Whisper.Error.CannotWhisperToSelf'in teknik belgeleriRBXWhisperCommand TextChatCommand'dan bir hata yanıtı
Roblox.Whisper.Error.TargetDoesNotExist hedefi yokRBXWhisperCommand TextChatCommand'dan bir hata yanıtı
Roblox.Whisper.Error.TooManyMatches'ınızRBXWhisperCommand TextChatCommand'dan bir hata yanıtı
Roblox.Whisper.Error.Unknown'ınRBXWhisperCommand TextChatCommand'dan bir hata yanıtı
Roblox.Emote.Error.DoesNotExist İçindekilerRBXEmoteCommand TextChatCommand'dan bir hata yanıtı
Roblox.Emote.Error.KullanıcıEmoteleriAktifDeğilRBXEmoteCommand TextChatCommand'dan bir hata yanıtı
Roblox.Emote.Error.Geçici olarak kullanılamıyorRBXEmoteCommand 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.AnimasyonOynamaRBXEmoteCommand TextChatCommand'dan bir hata yanıtı
Roblox.Mute.Error.OyuncuBulunamadıRBXMuteCommand TextChatCommand'dan bir hata yanıtı
Roblox.Mute.Error.ÇokluMaçlarRBXMuteCommand TextChatCommand'dan bir hata yanıtı
Roblox.Mute.Error.Kendini susturamıyorRBXMuteCommand 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çlarRBXUnmuteCommand TextChatCommand'dan bir hata yanıtı
Roblox.Unmute.Error.Kendini susturamıyorRBXUnmuteCommand 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)
Image showing a knight statue NPC broadcasting a chat message to the chat window, along with a chat bubble above its head.