Ten przykład pokazuje, jak używać klasy TextChatService do zaprojektowania własnego frontendu.Ponownie wykorzystuje domyślne kanały tekstowe z CreateDefaultTextChannels i jest bardzo prosty w porównaniu do domyślnego interfejsu użytkownika.
Wyłącz domyślną interfejs użytkownika, która jest dostarczana z przez ustawienie właściwości i na wartość w oknie właściwości Studio.
Stwórz zamiennik dla paska wpisu czatu. Jest to pudełko tekstowe, które wysyła wiadomości, gdy użytkownik naciśnie Enter .
Stwórz ScreenGui i powierz go rodzicowi StarterGui.
Stwórz TextBox i przypisz go do nowego ScreenGui, następnie przestaw ponownie i zmień rozmiar tak, jak chcesz.
Stwórz LocalScript i powierz go nowemu TextBox.
Dodaj następujący kod do LocalScript :
Kliencilocal TextChatService = game:GetService("TextChatService")-- RBXGeneral jest domyślnym kanałem publicznymlocal 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("Failed to send message")end-- Użytkownicy oczekują, że pudełko wprowadzenia zostanie wyczyszczone po wysłaniu wiadomośćtextBox.Text = ""endend)
Stwórz zamiennik okna czatu.To jest ScrollingFrame, który wyświetla wiadomości tak jak są otrzymywane z TextChatService.MessageReceived.Ten krok tworzy również UIListLayout , aby automatycznie rozmieścić wiadomości.
Stwórz kolejną nową ScreenGui i przypisz ją do StarterGui .
Stwórz ScrollingFrame i powiąż z ScreenGui , następnie przestaw ponownie i zmień rozmiar tak, jak chcesz.
Stwórz UIListLayout i powierz go rodzicowi ScrollingFrame.
Stwórz LocalScript i powierz go rodzicowi ScrollingFrame.
Dodaj następujący kod do LocalScript :
Kliencilocal TextChatService = game:GetService("TextChatService")-- Funkcja tworzenia nowej etykiety tekstowej dla każdej otrzymanej wiadomościlocal 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-- Zacznij słuchać przychodzących wiadomościTextChatService.MessageReceived:Connect(addMessageGui)
Testuj swoje doświadczenia, wysyłając wiadomości w pasku wpisu czatu.Powinieneś zobaczyć, że wiadomości pojawiają się w oknie czatu.Następnie możesz rozwinąć ten przykład poprzez dodanie funkcji, takich jak skupienie TextBox gdy naciśnięty zostanie klawisz lub dodanie tagów czatu.