Niestandardowy interfejs czatu tekstowego

*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.

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.

  1. 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.

  2. Stwórz zamiennik dla paska wpisu czatu. Jest to pudełko tekstowe, które wysyła wiadomości, gdy użytkownik naciśnie Enter .

    1. Stwórz ScreenGui i powierz go rodzicowi StarterGui.

    2. Stwórz TextBox i przypisz go do nowego ScreenGui, następnie przestaw ponownie i zmień rozmiar tak, jak chcesz.

    3. Stwórz LocalScript i powierz go nowemu TextBox.

    4. Dodaj następujący kod do LocalScript :

      Klienci

      local TextChatService = game:GetService("TextChatService")
      -- RBXGeneral jest domyślnym kanałem publicznym
      local RBXGeneral = TextChatService:FindFirstChild("TextChannels"):WaitForChild("RBXGeneral")
      local textBox = script.Parent
      textBox.FocusLost:Connect(function(enterPressed)
      local text = textBox.Text
      if enterPressed and #text > 0 then
      local success, response = pcall(function()
      return RBXGeneral:SendAsync(textBox.Text)
      end)
      if not success then
      RBXGeneral:DisplaySystemMessage("Failed to send message")
      end
      -- Użytkownicy oczekują, że pudełko wprowadzenia zostanie wyczyszczone po wysłaniu wiadomość
      textBox.Text = ""
      end
      end)
  3. 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.

    1. Stwórz kolejną nową ScreenGui i przypisz ją do StarterGui .

    2. Stwórz ScrollingFrame i powiąż z ScreenGui , następnie przestaw ponownie i zmień rozmiar tak, jak chcesz.

    3. Stwórz UIListLayout i powierz go rodzicowi ScrollingFrame.

    4. Stwórz LocalScript i powierz go rodzicowi ScrollingFrame.

    5. Dodaj następujący kod do LocalScript :

      Klienci

      local TextChatService = game:GetService("TextChatService")
      -- Funkcja tworzenia nowej etykiety tekstowej dla każdej otrzymanej wiadomości
      local function addMessageGui(textChatMessage: TextChatMessage)
      local isOutgoingMessage = textChatMessage.Status == Enum.TextChatMessageStatus.Sending
      local parent = script.Parent
      local originalLabel = parent:FindFirstChild(textChatMessage.MessageId)
      if originalLabel then
      originalLabel.Text = textChatMessage.Text
      originalLabel.BackgroundTransparency = if isOutgoingMessage then 0.5 else 0
      else
      local textLabel = Instance.new("TextLabel")
      textLabel.BorderSizePixel = 0
      textLabel.Font = Enum.Font.BuilderSans
      textLabel.TextSize = 18
      textLabel.TextXAlignment = Enum.TextXAlignment.Left
      textLabel.BackgroundTransparency = if isOutgoingMessage then 0.5 else 0
      textLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
      textLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
      textLabel.Name = textChatMessage.MessageId
      textLabel.AutomaticSize = Enum.AutomaticSize.XY
      textLabel.Text = textChatMessage.Text
      textLabel.Parent = parent
      end
      end
      -- Zacznij słuchać przychodzących wiadomości
      TextChatService.MessageReceived:Connect(addMessageGui)
  4. 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.