Dostosowywanie okna czatu

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

System czatu tekstowego w grze, obsługiwany przez TextChatService, umożliwia graczom łatwe komunikowanie się i nawiązywanie towarzyskich kontaktów w czasie rzeczywistym. Oprócz wspierania domyślnego czatu tekstowego, możesz dostosować interfejs użytkownika z przodu.

Konfiguracja okna czatu

Ogólne okno czatu składa się z:

  • Okna czatu
  • Paska wprowadzania
  • Kart kanałów (opcjonalnie)
Podstawowe komponenty okna czatu tekstowego.

Karty kanałów są domyślnie wyłączone, a każdy komponent można włączać i wyłączać w Studio lub za pomocą skryptów:

W oknie Eksploratora rozwiń gałąź TextChatService i wybierz ChatWindowConfiguration, ChatInputBarConfiguration lub ChannelTabsConfiguration. Następnie włącz lub wyłącz komponent w oknie Właściwości.

Gdy ChannelTabsConfiguration jest włączone, każdy domyślny TextChannel pojawia się na karcie zgodnie z poniższą tabelą. Ponadto każda niestandardowa TextChannel tworzy kartę odpowiadającą właściwości Name kanału.

Domyślny kanałNazwa karty
RBXGeneralOgólny
RBXSystemOgólny (połączony w jedną kartę z RBXGeneral)
RBXTeamZespół
RBXWhisperNazwa użytkownika innego gracza

Wygląd okna

Wygląd ogólnego okna czatu można dostosować za pomocą ChatWindowConfiguration.

Instancja ChatWindowConfiguration w hierarchii Eksploratora.
WłaściwośćOpisDomyślna
BackgroundColor3Color3 kolor tła okna czatu.[25, 27, 29]
BackgroundTransparencyPrzezroczystość tła okna czatu.0.3
EnabledCzy pokazywać domyślne okno czatu. Ustaw na false, aby ukryć.true
FontFaceFont tekstu w oknie czatu.BuilderSansMedium
TextColor3Color3 tekstu w oknie czatu.[255, 255, 255]
TextSizeRozmiar tekstu w oknie czatu.14
TextStrokeColor3Color3 koloru konturu tekstu w oknie czatu.[0, 0, 0]
TextStrokeTransparencyPrzezroczystość konturu tekstu w oknie czatu.0.5
HorizontalAlignmentWyrównanie poziome okna czatu.Left
VerticalAlignmentWyrównanie pionowe okna czatu.Top
HeightScaleSkala wysokości okna czatu w stosunku do rozmiaru ekranu.1
WidthScaleSkala szerokości okna czatu w stosunku do rozmiaru ekranu.1

Wygląd paska wprowadzania

Wygląd paska wprowadzania czatu można dostosować za pomocą ChatInputBarConfiguration.

Instancja ChatInputBarConfiguration w hierarchii Eksploratora.
WłaściwośćOpisDomyślna
BackgroundColor3Color3 kolor tła paska wprowadzania czatu.[25, 27, 29]
BackgroundTransparencyPrzezroczystość tła paska wprowadzania czatu.0.2
FontFaceFont tekstu wprowadzania czatu.BuilderSansMedium
PlaceholderColor3Color3 tekstu zastępczego w pasku wprowadzania czatu.[178, 178, 178]
TextColor3Color3 tekstu wprowadzonego przez gracza.[255, 255, 255]
TextSizeRozmiar tekstu wprowadzania czatu.14
TextStrokeColor3Color3 kolor konturu tekstu wprowadzania czatu.[0, 0, 0]
TextStrokeTransparencyPrzezroczystość konturu tekstu wprowadzania czatu.0.5
AutocompleteEnabledCzy system czatu tekstowego pokazuje opcje autouzupełniania dla emoji i komend. Emoji są autouzupełniane przez wpisanie : po którym następują znaki niebiałe, podczas gdy komendy są autouzupełniane przez wpisanie /.true
KeyboardKeyCodeDodatkowy klawisz, który gracze mogą nacisnąć, aby skupić się na domyślnym pasku wprowadzania czatu.Slash

Wygląd kart kanałów

Wygląd kart kanałów można dostosować za pomocą ChannelTabsConfiguration.

Instancja ChannelTabsConfiguration w hierarchii Eksploratora.
WłaściwośćOpisDomyślna
BackgroundColor3Color3 kolor tła kart kanałów.[25, 27, 29]
BackgroundTransparencyPrzezroczystość tła kart kanałów.0
HoverBackgroundColor3Color3 kolor tła kart podczas najeżdżania na nie kursorem.[125, 125, 125]
FontFaceFont dla tekstu w kartach kanałów.BuilderSansBold
TextColor3Color3 tekstu w niezaznaczonej karcie.[175, 175, 175]
SelectedTabTextColor3Color3 tekstu w zaznaczonej karcie.[255, 255, 255]
TextSizeRozmiar tekstu w kartach kanałów.18
TextStrokeColor3Color3 kolor konturu tekstu w kartach kanałów.[0, 0, 0]
TextStrokeTransparencyPrzezroczystość konturu tekstu w kartach kanałów.1

Dostosowywanie wiadomości

Możesz dostosować wygląd ciał wiadomości czatu i prefixów używając ChatWindowMessageProperties oraz TextChatService.OnChatWindowAdded callbacków bez nadpisywania istniejącego interfejsu użytkownika. Opcje dostosowywania pozwalają Ci zmienić wygląd wiadomości czatu tak, aby pasowały do tematu Twojej gry, a także sortować lub wyróżniać wiadomości z różnych grup użytkowników, kolorując prefixy lub dodając tagi czatu.

Kolorowanie nazw użytkowników

Gdy użytkownik wysyła wiadomość czatu, jego DisplayName wyświetla się jako część prefiksu wiadomości. Domyślnie, nazwa każdego użytkownika jest kolorowana zgodnie z jego Player.TeamColor, ale możesz zmienić kolory nazw czatu używając ChatWindowMessageProperties i OnChatWindowAdded. Poniższy LocalScript w StarterPlayerScripts przypisuje ustalony kolor każdemu użytkownikowi, wybierając losowo z tabeli kolorów RGB.

Pokolorowana nazwa użytkownika w oknie czatu.
LocalScript - Kolory nazw użytkowników

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

Możesz również zastosować kolory i przezroczystość gradientów do kolorowania prefixów wiadomości używając UIGradient.

Gradientowa nazwa użytkownika w oknie czatu.
Gradientowe kolory nazw użytkowników

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

Dostosowywanie tekstu bogatego

Tagi [koloru czcionki] (../ui/rich-text.md#supported-tags) tekstu bogatego można wykorzystać do formatowania wiadomości czatu, co jest pomocne, gdy chcesz zastosować formatowanie do bardzo specyficznych części wiadomości. Zauważ, że tekst bogaty nie obsługuje gradientów, ale poniższy przykład kodu pokazuje, jak możesz przenieść nazwę użytkownika (przechowywaną w TextChatMessage.PrefixText) do treści wiadomości, a następnie zastosować tagowanie tekstu bogatego tylko do części nazwy.

Dostosowanie tekstu bogatego użytkownika w oknie czatu.
Dostosowywanie tekstu bogatego

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

Wiadomości z źródeł niebędących graczami

Gdy TextChatService.CreateDefaultTextChannels jest true, jednym z domyślnych kanałów tekstowych jest kanał RBXSystem. Domyślne skrypty czatu automatycznie wyświetlają wiadomości systemowe w tym kanale. Możesz dostosować wygląd tych wiadomości używając callbacku TextChannel.OnIncomingMessage.

Możesz chcieć dostosować lub zmienić wiadomości systemowe, które są automatycznie emitowane przez system czatu. Ponieważ domyślne wiadomości systemowe są lokalizowane dla użytkowników, powinieneś odwołać się do nich przez TextChatMessage.Metadata w swoich callbackach czatu tekstowego, jeśli chcesz dostosować ich wygląd. Na przykład, możesz użyć Metadata, aby zidentyfikować wiadomości systemowe, wiadomości o błędach lub wiadomości z konkretnych systemów w Twojej grze.

System

Aby dostarczyć wiadomość systemową do lokalnego gracza, na przykład "przemówienie" z systemu publicznych adresów, wywołaj DisplaySystemMessage() z domyślnego kanału RBXGeneral z prefiksem przed nazwą wyświetlaną gracza.

Client Script

local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local player = Players.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Przewodnik] Witaj "
-- Wyślij "wiadomość systemową" do gracza z ich nazwą wyświetlaną
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Obraz pokazujący podstawową wiadomość systemową w oknie czatu.

NPC/obiekt

Możesz również stylizować dialogi osób niebędących graczami i dodać dymki czatu, aby wyglądało na to, że wiadomości pochodzą od NPC lub obiektu w wirtualnym świecie 3D.

Client Script

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")
-- Sprawdzanie wiadomości systemowych, które zawierają metadane
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Dodanie prefiksu, aby wiadomość wyglądała na wysłaną przez gracza
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Dodanie dymka czatu
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "Witaj! Będę Twoim przewodnikiem."
local speakerName = "Starożytny Rycerz"
generalChannel:DisplaySystemMessage(message, speakerName)
Obraz pokazujący posąg rycerza NPC, który nadaje wiadomość czatu w oknie czatu, wraz z dymkiem czatu nad jego głową.
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.