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

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ół
RBXWhisperNazwa użytkownika drugiego gracza

Wygląd okna

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

ChatWindowConfiguration instance in Explorer hierarchy.
WłaściwośćOpisDomyślny
BackgroundColor3Color3 tło koloru okna czatu.[25, 27, 29]
BackgroundTransparencyPrzezroczystość tła okna czatu.0.3
FontFaceFont z tekstu okna czatu.BuilderSansMedium
TextColor3Color3 z tekstu okna czatu.[255, 255, 255]
TextSizeRozmiar tekstu okna czatu.14
TextStrokeColor3Color3 z pociągnięcia dla tekstu okna czatu.[0, 0, 0]
TextStrokeTransparencyPrzezroczystość pisma dla tekstu okna czatu.0.5
HorizontalAlignmentPoziome wyśrodkowanie okna czatu.Left
VerticalAlignmentPoziomy wyświetlanie 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 wejściowego

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

ChatInputBarConfiguration instance in Explorer hierarchy.
WłaściwośćOpisDomyślny
BackgroundColor3Color3 tło koloru klawiatury czatu.[25, 27, 29]
BackgroundTransparencyPrzezroczystość tła paska wpisu czatu.0.2
FontFaceFont z tekstu wpisu czatu.BuilderSansMedium
PlaceholderColor3Color3 z tekstem wejściowym czatu na miejscu.[178, 178, 178]
TextColor3Color3 z tekstem wejściowym czatu wpisanym przez gracza.[255, 255, 255]
TextSizeRozmiar tekstu wejściowego czatu.14
TextStrokeColor3Color3 kolor szczotki tekstu wejściowego czatu.[0, 0, 0]
TextStrokeTransparencyPrzezroczystość pisma dla tekstu wejściowego czatu.0.5
AutocompleteEnabledCzy 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
KeyboardKeyCodeDodatkowi 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ą .

ChannelTabsConfiguration instance in Explorer hierarchy.
WłaściwośćOpisDomyślny
BackgroundColor3Color3 tło koloru zakładek kanału.[25, 27, 29]
BackgroundTransparencyPrzezroczystość tła zakładek kanału.0
HoverBackgroundColor3Color3 tło koloru zakładek podczas przewijania ich.[125, 125, 125]
FontFaceFont dla tekstu w zakładkach kanału.BuilderSansBold
TextColor3Color3 tekstu w niewybranej zakładce.[175, 175, 175]
SelectedTabTextColor3Color3 tekstu w wybranej zakładce.[255, 255, 255]
TextSizeRozmiar tekstu w zakładkach kanału.18
TextStrokeColor3Color3 kolor szczotki tekstu w zakładkach kanału.[0, 0, 0]
TextStrokeTransparencyPrzezroczystość 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.

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

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

Rich text customization of user name in the chat window.
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.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[Guide] Welcome "
-- Wyślij "wiadomość systemową" do gracza z dodaną nazwą wyświetlaną
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
Image showing a basic system message in the chat window.

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)
Image showing a knight statue NPC broadcasting a chat message to the chat window, along with a chat bubble above its head.