使用 在体验文字聊天 系统,您可以支持 泡泡聊天 以显示用户可以在用户头像和 NPC 上显示的可自定义聊天气泡。 泡泡聊天可以让您的体验更具视觉上的吸引力,并帮助用户轻松识别消息和其发言人在上下文相关方
启用聊天对话框
要在您的体验中启用泡泡聊天:
在 Explorer 窗口中,选择 BubbleChatConfiguration 在 TextChatService 下。
泡泡定制
启用泡泡聊天后,您可以自定义泡泡聊天的外观和行为,以匹配您的体验主题。使用 属性 窗口的 BubbleChatConfiguration 为基础进行基础更改,例如文本颜色和空格,或实现2>高级2>泡泡背景图像和其他视觉调整。
或者,您可以在 LocalScript 中使用所有的自定义设置添加一个 StarterPlayerScripts。这允许引擎在执行时间时应用您的自定义设置,并且覆盖 Studio 中的设置。它对于添加特殊效果到聊天泡泡时很有用,当用户触发特定事件或条件。
基本定制
下表显示常见的泡泡聊天自定义属性。 要获取完整列表,请参阅BubbleChatConfiguration。
属性 | 描述 | 默认 |
---|---|---|
BackgroundColor3 | 在 Color3 中的泡泡的背景颜色。 | [250, 250, 250] |
FontFace | Font 泡泡文本。 | BuilderSansMedium |
TextColor3 | 在 Color3 中泡泡文本的颜色。 | [57, 59, 61] |
TextSize | 气泡文本的大小。 | 16 |
高级自定义
对于您的泡泡的高级自定义,请添加在 BubbleChatConfiguration 下代表泡泡特定外观的 UI 对象,例如:
- 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://6733332557"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 | 从顶部左侧显示的图像区域的 Offset。 | (0, 0) |
ImageRectSize | 要显示的图像区域的大小。为了显示整个图像,请将其设置为 0 。 | (0, 0) |
ScaleType | 用于将图像渲染时,其大小与泡泡的绝对大小不同的图像类型。 | Stretch |
SliceCenter | 在图像是 9 个切割的图像的边界上切割边界。仅适用于当你将 ScaleType 设置为 Slice 时。 | (0, 0, 0, 0) |
SliceScale | 如果图像是 9 个切割边的图像,调整片边的比例比例如果图像是 9 个切割边的图像。仅适用于您将 ScaleType 设置为 Slice 。 | 1 |
TileSize | 图像的大小。仅适用于您将 ScaleType 设置为 Tile 。 | (1, 0, 1, 0) |
泡泡定制
您可以根据特定条件单独 стили化和修改聊天气泡行为,这会覆盖您的一般设置。例如,您可以使用聊天气泡来区分 NPC 和用户,突出重要健康状态,并且在预定键词上添加特殊效果。
要设置 per-bubble 自定义,请使用 LocalScript 的匹配属性,并使用 BubbleChatMessageProperties 回调来指定要自定义每个
以下基本自定义属性可用于个体定制:
属性 | 描述 | 默认 |
---|---|---|
BackgroundColor3 | 在 Color3 中的泡泡的背景颜色。 | (250, 250, 250) |
BackgroundTransparency | 泡泡的背景透明度。 | 0.1 |
FontFace | Font 泡泡文本。 | BuilderSansMedium |
TextColor3 | 在 Color3 中泡泡文本的颜色。 | [57, 59, 61] |
TextSize | 气泡文本的大小。 | 16 |
以下示例将特殊外观添加到 VIP 用户的聊天气泡,检查聊天消息发件人有没有 IsVIP 属性:
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")
-- 根据用户的用户ID发送聊天消息给用户
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
所有高级自定义选项都可用于泡泡自定义。与一般泡泡自定义类似,添加您想要自定义为“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
-- 使用他们的用户ID发送聊天消息的用户
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.Parent = bubbleProperties
uiGradient.Rotation = 90
return bubbleProperties
end
end
end
NPC 泡泡
您可以显示非玩家角色 (NPC) 的聊天泡泡, 通过调用 TextChatService:DisplayBubble() , 使用 TextChatService.OnBubbleAdded 回调显示 NPC 角色和消息. 这些泡泡可以使用 Class.TextChatService.OnBubbleAdded 回调, 就像其他聊天泡泡一样.
TextChatService:DisplayBubble() 只能在客户端脚本上工作,请确保使用 Script 与
local TextChatService = game:GetService("TextChatService")
local prompt = workspace.SomeNPC.ProximityPrompt
local head = prompt.Parent:WaitForChild("Head")
prompt.Triggered:Connect(function()
TextChatService:DisplayBubble(head, "Hello world!")
end)