System czatu tekstowego w doświadczeniu , zasilany przez , pozwala graczom łatwo komunikować się i integrować ze sobą w doświadczeniach na żywo.Oprócz wspierania domyślnej czatu tekstowego możesz dostosować interfejs użytkownika front-endu.
Konfiguracja okna czatu
Ogólne okno czatu składa się z:
- Okno czatu
- Pasek wpisu
- Zakładki kanału (opcjonalne)

Zakładki kanału są wyłączone domyślnie, a każdy komponent może być przełączany włącznie i wyłącznie w Studio lub za pomocą skryptowania:
W oknie Eksploratora rozszerz gałąź TextChatService i wybierz ChatWindowConfiguration , ChatInputBarConfiguration lub ChannelTabsConfiguration.Następnie włącz lub wyłącz komponent w oknie Właściwości.

Gdy włączono ChannelTabsConfiguration, każdy domyślny TextChannel pojawia się w zakładce, o której mowa w następującej tabeli.Ponadto każdy niestandardowy TextChannel tworzy zakładkę odpowiadającą właściwości kanału Name.
Domyślny kanał | Nazwa zakładki |
---|---|
RBXGeneral | Ogólne |
RBXSystem | Ogólne (połączone w jedną zakładkę z RBXGeneral ) |
RBXTeam | Zespół |
RBXWhisper | Nazwa użytkownika drugiego gracza |
Wygląd okna
Wygląd ogólnego okna czatu można dostosować za pomocą ChatWindowConfiguration.

Właściwość | Opis | Domyślny |
---|---|---|
BackgroundColor3 | Color3 tło koloru okna czatu. | [25, 27, 29] |
BackgroundTransparency | Przezroczystość tła okna czatu. | 0.3 |
FontFace | Font z tekstu okna czatu. | BuilderSansMedium |
TextColor3 | Color3 z tekstu okna czatu. | [255, 255, 255] |
TextSize | Rozmiar tekstu okna czatu. | 14 |
TextStrokeColor3 | Color3 z pociągnięcia dla tekstu okna czatu. | [0, 0, 0] |
TextStrokeTransparency | Przezroczystość pisma dla tekstu okna czatu. | 0.5 |
HorizontalAlignment | Poziome wyśrodkowanie okna czatu. | Left |
VerticalAlignment | Poziomy wyświetlanie okna czatu. | Top |
HeightScale | Skala wysokości okna czatu w stosunku do rozmiaru ekranu. | 1 |
WidthScale | Skala szerokości okna czatu w stosunku do rozmiaru ekranu. | 1 |
Wygląd paska wejściowego
Wygląd paska wpisu czatu można dostosować za pomocą ChatInputBarConfiguration.

Właściwość | Opis | Domyślny |
---|---|---|
BackgroundColor3 | Color3 tło koloru klawiatury czatu. | [25, 27, 29] |
BackgroundTransparency | Przezroczystość tła paska wpisu czatu. | 0.2 |
FontFace | Font z tekstu wpisu czatu. | BuilderSansMedium |
PlaceholderColor3 | Color3 z tekstem wejściowym czatu na miejscu. | [178, 178, 178] |
TextColor3 | Color3 z tekstem wejściowym czatu wpisanym przez gracza. | [255, 255, 255] |
TextSize | Rozmiar tekstu wejściowego czatu. | 14 |
TextStrokeColor3 | Color3 kolor szczotki tekstu wejściowego czatu. | [0, 0, 0] |
TextStrokeTransparency | Przezroczystość pisma dla tekstu wejściowego czatu. | 0.5 |
AutocompleteEnabled | Czy system czatu tekstowego pokazuje opcje autouzupełniania dla emoji i komend.Emoji są automatycznie uzupełniane poprzez wpisanie : połączonego z niepróżniowymi znakami, podczas gdy polecenia są automatycznie uzupełniane poprzez wpisanie /. | true |
KeyboardKeyCode | Dodatkowi gracze kluczowi mogą nacisnąć, aby uruchomić skupienie na domyślnej pasku wprowadzenia czatu. | Slash |
Wygląd zakładek kanału
Wygląd zakładek kanału jest dostosowywalny za pomocą .

Właściwość | Opis | Domyślny |
---|---|---|
BackgroundColor3 | Color3 tło koloru zakładek kanału. | [25, 27, 29] |
BackgroundTransparency | Przezroczystość tła zakładek kanału. | 0 |
HoverBackgroundColor3 | Color3 tło koloru zakładek podczas przewijania ich. | [125, 125, 125] |
FontFace | Font dla tekstu w zakładkach kanału. | BuilderSansBold |
TextColor3 | Color3 tekstu w niewybranej zakładce. | [175, 175, 175] |
SelectedTabTextColor3 | Color3 tekstu w wybranej zakładce. | [255, 255, 255] |
TextSize | Rozmiar tekstu w zakładkach kanału. | 18 |
TextStrokeColor3 | Color3 kolor szczotki tekstu w zakładkach kanału. | [0, 0, 0] |
TextStrokeTransparency | Przezroczystość pisma dla tekstu w zakładkach kanału. | 1 |
Dostosuj wiadomości
Możesz dostosować wygląd ciał wiadomości czatu i prefiksów za pomocą ChatWindowMessageProperties i TextChatService.OnChatWindowAdded wezwań bez przeładowywania istniejącego interfejsu użytkownika.Opcje personalizacji pozwalają modyfikować wygląd wiadomości czatu, aby dopasować go do tematu doświadczenia, a możesz również sortować lub podświetlać wiadomości z różnych grup użytkowników poprzez koloryzowanie prefiksów lub dodawanie tagów czatu.
Kolorowe nazwy użytkowników
Kiedy użytkownik wysyła wiadomość czat, jego DisplayName wyświetla się jako część prefiksu wiadomości.Domyślnie każda nazwa użytkownika jest kolorowa zgodnie z ich Player.TeamColor ale możesz zmienić kolory nazw czatu za pomocą ChatWindowMessageProperties i OnChatWindowAdded .Poniższy LocalScript w StarterPlayerScripts przypisuje każdemu użytkownikowi określoną kolor, wybierając losowo z tablicy kolorów RGB.

LocalScript - losowe 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ć gradienty koloru i przejrzystości do prefiksów wiadomości kolorowych za pomocą UIGradient.

Kolory nazw użytkowników stopniowych
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
Dostosowanie bogatego tekstu
Tagi kolorów czcionki bogatego tekstu mogą być używane do formatowania wiadomości czatu, pomocne, jeśli chcesz zastosować formatowanie do bardzo konkretnych części wiadomości.Zauważ, że bogaty tekst nie wspiera gradientów, ale następny przykład kodu pokazuje, jak możesz przenieść nazwę użytkownika (przechowywaną w TextChatMessage.PrefixText ) do ciała wiadomości, a następnie zastosować etykietę bogatego tekstu tylko do części nazwy.

Dostosowanie bogatego tekstu
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 niegraczowych źródeł
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 za pomocą powrotu TextChannel.OnIncomingMessage.
Możesz chcieć dostosować lub zmienić wiadomości systemowe wysyłane automatycznie przez system czatu.Ponieważ domyślne wiadomości systemowe są lokalizowane dla użytkowników, powinieneś odwoływać się do nich za pomocą TextChatMessage.Metadata w swoich powiadomieniach o rozmowie tekstowej, jeśli chcesz dostosować ich wygląd.Na przykład możesz użyć Metadata do identyfikacji wiadomości systemowych, wiadomości o błędach lub wiadomości z określonych systemów w swoim doświadczeniu.
System
Aby dostarczyć wiadomość systemową do lokalnego gracza, taką jak "przemowa" z systemu adresowego publicznego, zadzwoń DisplaySystemMessage() z domyślnym kanałem RBXGeneral z prefiksem przed nazwą wyświetlania gracza.
Skrypt klienta
local Players = game:GetService("Players")local TextChatService = game:GetService("TextChatService")local player = Players.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal PREFIX = "[Guide] Welcome "-- Wyślij "wiadomość systemową" do gracza z dodaną nazwą wyświetlanągeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)

NPC/obiekt
Możesz także stylizować dialog nie-gracza i dodać bąbelki czatu, aby wyglądał na to, że wiadomości pochodzą od NPC lub obiektu w świecie 3D.
Skrypt klienta
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")
-- Sprawdź wiadomości systemowe, które zawierają metadane
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- Dodaj prefiks, aby wiadomość wyglądała, jakby została wysłana przez gracza
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- Dodaj czat bąbelkowy
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)
