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ı
RBXGeneral Genel
RBXSystem Genel (tek bir sekme içinde birleştirilmiş RBXGeneral )
RBXTeam Takı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.

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 şeffaflığı.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 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.

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

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.