TextChatService 를 사용하면 사용자 아바타와 NPC 위에 커스터마이즈 가능한 음성 채팅 거품을 표시하기 위해 거품 채팅을 사용할 수 있습니다.거품 채팅은 경험을 시각적으로 더 몰입감 있게 만들고 사용자가 상황에 관련된 메시지와 스피커를 쉽게 식별할 수 있도록 도와줍니다.이 기능은 사용자가 다른 사람들과 덜 방해가 되는 방식으로 통신하면서 동시에 콘텐츠에 집중해야 하는 경험에 특히 유용합니다.
거품 채팅 활성화
경험에서 거품 채팅을 활성화하려면:
탐색기 창에서 아래에 있는 을 선택합니다.
속성 창에서 BubbleChatConfiguration.Enabled 확인란을 확인합니다.
거품 사용자 지정
거품 채팅을 활성화한 후, 경험 테마와 일치하도록 채팅 거품의 모양과 동작을 사용자 지정할 수 있습니다.텍스트 색상 및 간격과 같은 기본 변경, 또는 거품 배경 이미지 및 기타 시각적 조정에 대한 고급 사용자 지정을 구현하기 위해 속성 창을 사용하거나 속성 창을 사용하여 다양한 시각적 조정을 구현합니다.

또는 모든 사용자 지정 설정을 사용하여 LocalScript에 StarterPlayerScripts에 추가하십시오.이렇게 하면 엔진이 런타임에 사용자 지정을 적용하여 Studio의 설정을 재정의할 수 있습니다.사용자가 특정 이벤트나 조건을 트리거할 때 채팅 거품에 특수 효과를 추가하는 데 유용합니다.
기본 사용자 지정
다음 표에서는 일반적인 버블 채팅 사용자 지정 속성을 보여줍니다. 전체 사용자 지정 속성 목록은 BubbleChatConfiguration 참조하십시오.
속성 | 설명 | 기본 |
---|---|---|
BackgroundColor3 | Color3 에서 거품의 배경색. | [250, 250, 250] |
FontFace | Font 거품 텍스트의. | BuilderSansMedium |
TextColor3 | Color3에 있는 거품 텍스트의 색상. | [57, 59, 61] |
TextSize | 거품 텍스트 크기. | 16 |
고급 사용자 지정
방울의 고급 사용자 지정을 위해, 방울 모양의 특정 측면을 나타내는 UI 개체를 BubbleChatConfiguration 아래에 자식으로 추가하여 다음을 포함합니다.
- ImageLabel 배경 이미지 설정에 대해서.
- UIGradient 배경 그라데이션 설정에 대해서.
- UICorner 거품의 모서리 모양에 대해서.
- UIPadding 텍스트와 거품 가장자리 사이의 여백 공간, 부모의 일반 크기에 대해.
이러한 개체를 추가한 후 채팅 거품에 적용되는 이러한 개체의 속성을 수정하여 고급 거품 사용자 지정을 수행할 수 있습니다.다음 예제 LocalScript 는 배경 이미지와 날카로운 모서리를 거품에 추가합니다.
고급 거품 사용자 지정
local TextChatService = game:GetService("TextChatService")local bubbleChatConfiguration = TextChatService.BubbleChatConfigurationbubbleChatConfiguration.TailVisible = falsebubbleChatConfiguration.TextColor3 = Color3.fromRGB(220, 50, 50)bubbleChatConfiguration.FontFace = Font.fromEnum(Enum.Font.LuckiestGuy)local bubbleUICorner = bubbleChatConfiguration:FindFirstChildOfClass("UICorner")if not bubbleUICorner thenbubbleUICorner = Instance.new("UICorner")bubbleUICorner.Parent = bubbleChatConfigurationendbubbleUICorner.CornerRadius = UDim.new(0, 0)local bubbleUIPadding = bubbleChatConfiguration:FindFirstChildOfClass("UIPadding")if not bubbleUIPadding thenbubbleUIPadding = Instance.new("UIPadding")bubbleUIPadding.Parent = bubbleChatConfigurationendbubbleUIPadding.PaddingTop = UDim.new(0, 20)bubbleUIPadding.PaddingRight = UDim.new(0, 10)bubbleUIPadding.PaddingBottom = UDim.new(0, 15)bubbleUIPadding.PaddingLeft = UDim.new(0, 10)local bubbleImageLabel = bubbleChatConfiguration:FindFirstChildOfClass("ImageLabel")if not bubbleImageLabel thenbubbleImageLabel = Instance.new("ImageLabel")bubbleImageLabel.Parent = bubbleChatConfigurationendbubbleImageLabel.Image = "rbxassetid://109157529833093"bubbleImageLabel.ScaleType = Enum.ScaleType.SlicebubbleImageLabel.SliceCenter = Rect.new(40, 40, 320, 120)bubbleImageLabel.SliceScale = 0.5

다음 표에서는 사용 가능한 GuiObject 및 모양 수정자 아이들과 함께 유효한 사용자 지정 속성을 설명합니다:
속성 | 설명 | 기본 |
---|---|---|
Image | 거품 배경 이미지의 자산 ID. | |
ImageColor3 | 거품 배경 이미지의 색상 틴트는 Color3에서 입니다. | [255, 255, 255] |
ImageRectOffset | 픽셀로 왼쪽 상단에서 표시되는 이미지 영역의 오프셋. | (0, 0) |
ImageRectSize | 픽셀에 표시될 이미지 영역의 크기. 전체 이미지를 표시하려면 차원을 0로 설정하십시오. | (0, 0) |
ScaleType | 크기가 거품의 절대 크기와 다른 경우 이미지를 렌더링하는 크기 유형입니다. | Stretch |
SliceCenter | 이미지가 9개의 조각으로 나뉜 이미지인 경우 이미지의 조각 경계를 잘라냅니다. ScaleType 를 Slice로 설정할 때만 적용됩니다. | (0, 0, 0, 0) |
SliceScale | 이미지가 9개의 조각으로 나뉜 이미지인 경우 슬라이스 가장자리의 규모 비율. ScaleType 를 Slice 로 설정할 때만 적용됩니다. | 1 |
TileSize | 이미지의 타일링 크기. ScaleType 를 Tile로 설정한 경우에만 적용됩니다. | (1, 0, 1, 0) |
버블 별 사용자 지정
일반 설정을 재정의하기 위해 특정 조건에 따라 채팅 거품 동작을 개별적으로 스타일링하고 수정할 수 있습니다.예를 들어, 채팅 거품을 사용하여 NPC와 사용자를 구별하고, 중요한 상태를 강조하며, 미리 정의된 키워드가 있는 메시지에 특수 효과를 적용할 수 있습니다.
각 거품의 사용자 지정을 설정하려면 LocalScript 를 사용하여 클라이언트 측 BubbleChatMessageProperties 을 추가하고, 이는 BubbleChatConfiguration 의 일치하는 속성을 재정의하고, 각 거품을 사용자 지정하는 방법을 지정하는 TextChatService.OnBubbleAdded 콜백을 사용합니다.콜백은 사용자, 채팅 텍스트 콘텐츠, 사용자 캐릭터 속성 및 정의하려는 특정 조건과 관련된 특성에 따라 사용자 지정을 적용할 수 있도록 TextChatMessage 속성과 장식을 제공합니다.
다음 기본 사용자 지정 속성은 개별 거품 사용자 지정에 사용할 수 있습니다:
속성 | 설명 | 기본 |
---|---|---|
BackgroundColor3 | Color3 에서 거품의 배경색. | (250, 250, 250) |
BackgroundTransparency | 거품의 배경 투명도. | 0.1 |
FontFace | Font 거품 텍스트의. | BuilderSansMedium |
TextColor3 | Color3에 있는 거품 텍스트의 색상. | [57, 59, 61] |
TextSize | 거품 텍스트 크기. | 16 |
다음 예제에서는 채팅 메시지 발신자가 IsVIP 특성을 가지고 있는지 확인하여 VIP 사용자의 채팅 거품에 특별한 모양을 추가합니다.
VIP 버블
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- 경험에 새 채팅 거품이 추가될 때의 이벤트 처리기
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- 채팅 메시지에 TextSource(발신자)가 연결되어 있는지 확인
if message.TextSource then
-- 채팅 거품을 사용자 지정하기 위해 새 BubbleChatMessageProperties 인스턴스를 만듭니다
local bubbleProperties = Instance.new("BubbleChatMessageProperties")
-- 사용자의 UserId에 따라 채팅 메시지를 보낸 사용자 가져오기
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
if player:GetAttribute("IsVIP") then
-- 플레이어가 VIP인 경우 채팅 버블 속성 사용자 정의
bubbleProperties.TextColor3 = Color3.fromHex("#F5CD30")
bubbleProperties.BackgroundColor3 = Color3.fromRGB(25, 27, 29)
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.PermanentMarker)
end
return bubbleProperties
end
end
모든 고급 사용자 지정 옵션은 개별 거품 사용자 지정에 사용할 수 있습니다.일반 거품의 자식으로 사용하려는 인스턴스를 추가하여 일반 사용자 지정의 고급 기능과 유사합니다.Similar to advanced customization for general bubbles, add instances that you want to customize as children of BubbleChatMessageProperties .다음 예제에서는 채팅 메시지 발신자의 Humanoid.Health 속성을 확인하여 건강 상태가 낮은 사용자의 채팅 거품에 특수 그라데이션 효과와 다른 속성을 추가합니다:
체력 저하 거품
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- 경험에 새 채팅 거품이 추가될 때의 이벤트 처리기
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- 채팅 메시지에 TextSource(발신자)가 연결되어 있는지 확인
if message.TextSource then
-- 사용자 아이디를 사용하여 채팅 메시지를 보낸 사용자 찾기 Get the user who sent the chat message by using their UserId
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
-- 사용자의 캐릭터에서 휴머노이드 찾기
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid and humanoid.Health < 25 then
-- 채팅 거품을 사용자 지정하기 위해 새 BubbleChatMessageProperties 인스턴스를 만듭니다
local bubbleProperties :BubbleChatMessageProperties = Instance.new("BubbleChatMessageProperties")
-- 건강 상태가 낮은 경우 채팅 거품 속성 사용자 정의
bubbleProperties.BackgroundColor3 = Color3.fromRGB(245, 245, 245)
bubbleProperties.TextColor3 = Color3.fromRGB(234, 51, 96)
bubbleProperties.TextSize = 20
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.DenkOne)
-- UIGradient를 자식으로 추가하여 그라데이션 사용자 정의
local uiGradient : UIGradient = Instance.new("UIGradient")
uiGradient.Color = ColorSequence.new(Color3.fromRGB(110, 4, 0), Color3.fromRGB(0, 0, 0))
uiGradient.Rotation = 90
uiGradient.Parent = bubbleProperties
return bubbleProperties
end
end
end
수동으로 거품 표시
NPC와 같이 플레이어가 메시지를 보내지 않은 경우 채팅 거품을 표시하고 싶을 수도 있습니다.TextChatService:DisplayBubble() 메서드를 사용하여 채팅 거품을 수동으로 표시합니다.
이 거품의 사용자 지정은 플레이어가 텍스트채널을 사용하여 메시지를 보낼 때 자동으로 표시되는 거품의 사용자 지정과 동일합니다. TextChatService.OnBubbleAdded 콜백 .
NPC 거품
NPC 캐릭터와 메시지를 매개변수로 사용하여 TextChatService:DisplayBubble(character, message)를 호출하여 플레이어가 아닌 캐릭터(NPC)의 채팅 거품을 표시합니다.이 거품은 다른 채팅 거품과 마찬가지로 TextChatService.OnBubbleAdded 콜백을 사용하여 사용자 지정할 수 있습니다.
TextChatService:DisplayBubble() 는 클라이언트 측 스크립트에서만 작동하므로, 반드시 Script 를 사용하여 RunContext 를 Enum.RunContext.Client 으로, 또는 LocalScript 에 적절한 컨테이너에서 로, 예를 들어 StarterPlayerScripts 를 사용하십시오.NPC에 ProximityPrompt를 연결하면 채팅 거품을 표시하는 스크립트가 다음과 같이 표시될 수 있습니다.
local TextChatService = game:GetService("TextChatService")
local Workspace = game:GetService("Workspace")
local prompt = Workspace.SomeNPC.ProximityPrompt
local head = prompt.Parent:WaitForChild("Head")
prompt.Triggered:Connect(function()
TextChatService:DisplayBubble(head, "Hello world!")
end)