Ten przykład pokazuje jak użyć klasy TextChatService, aby zaprojektować swój własny interfejs użytkownika. Wykorzystuje on domyślne kanały tekstowe z CreateDefaultTextChannels i jest bardzo prosty w porównaniu do domyślnego interfejsu użytkownika.
Wyłącz domyślny interfejs użytkownika, który przychodzi z TextChatService, ustawiając właściwości ChatWindowConfiguration.Enabled i ChatInputBarConfiguration.Enabled na false w oknie Właściwości Studia.
Stwórz zamiennik dla paska wprowadzania czatu. To jest pole tekstowe, które emituje wiadomości, gdy użytkownik naciśnie Enter.
Utwórz ScreenGui i umieść go w StarterGui.
Utwórz TextBox i umieść go w nowym ScreenGui, następnie przesuń i zmień rozmiar według potrzeb.
Utwórz LocalScript i umieść go w nowym TextBox.
Dodaj następujący kod do LocalScript:
Klientlocal TextChatService = game:GetService("TextChatService")-- RBXGeneral to domyślny publiczny kanałlocal RBXGeneral = TextChatService:FindFirstChild("TextChannels"):WaitForChild("RBXGeneral")local textBox = script.ParenttextBox.FocusLost:Connect(function(enterPressed)local text = textBox.Textif enterPressed and #text > 0 thenlocal success, response = pcall(function()return RBXGeneral:SendAsync(textBox.Text)end)if not success thenRBXGeneral:DisplaySystemMessage("Nie udało się wysłać wiadomości")end-- Użytkownicy oczekują, że pole wprowadzania zostanie wyczyszczone po wysłaniu wiadomościtextBox.Text = ""endend)
Stwórz zamiennik dla okna czatu. To jest ScrollingFrame, które wyświetla wiadomości, gdy są one odbierane z TextChatService.MessageReceived. Ten krok również tworzy UIListLayout, aby automatycznie układać wiadomości.
Utwórz kolejny nowy ScreenGui i umieść go w StarterGui.
Utwórz ScrollingFrame i umieść go w ScreenGui, następnie przesuń i zmień rozmiar według potrzeb.
Utwórz UIListLayout i umieść go w ScrollingFrame.
Utwórz LocalScript i umieść go w ScrollingFrame.
Dodaj następujący kod do LocalScript:
Klientlocal TextChatService = game:GetService("TextChatService")-- Funkcja do tworzenia nowej etykiety tekstowej dla każdej wiadomości odebranejlocal function addMessageGui(textChatMessage: TextChatMessage)local isOutgoingMessage = textChatMessage.Status == Enum.TextChatMessageStatus.Sendinglocal parent = script.Parentlocal originalLabel = parent:FindFirstChild(textChatMessage.MessageId)if originalLabel thenoriginalLabel.Text = textChatMessage.TextoriginalLabel.BackgroundTransparency = if isOutgoingMessage then 0.5 else 0elselocal textLabel = Instance.new("TextLabel")textLabel.BorderSizePixel = 0textLabel.Font = Enum.Font.BuilderSanstextLabel.TextSize = 18textLabel.TextXAlignment = Enum.TextXAlignment.LefttextLabel.BackgroundTransparency = if isOutgoingMessage then 0.5 else 0textLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0)textLabel.TextColor3 = Color3.fromRGB(255, 255, 255)textLabel.Name = textChatMessage.MessageIdtextLabel.AutomaticSize = Enum.AutomaticSize.XYtextLabel.Text = textChatMessage.TexttextLabel.Parent = parentendend-- Rozpocznij nasłuchiwanie na przychodzące wiadomościTextChatService.MessageReceived:Connect(addMessageGui)
Przetestuj swoją grę, wysyłając wiadomości w pasku wejściowym czatu. Powinieneś zobaczyć wiadomości pojawiające się w oknie czatu. Możesz następnie rozwijać ten przykład, dodając funkcje, takie jak fokusowanie TextBox, gdy naciśniesz klawisz lub dodając tagi czatu.