角色上下文菜单

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

角色上下文菜单 (ACM) 使用户之间的互动变得更加简单。当在你的游戏中启用 ACM 时,用户可以走到其他用户的角色旁边并点击他们,以打开一个小菜单,其中包含几个默认选项。玩家可以发送朋友请求、开始私人聊天、查看用户的个人资料或挥手。

启用 游戏中的 ACM 后,你可以通过以下方式自定义 ACM:

启用角色上下文菜单

必须使用 StarterGui:SetCore() 选项 "AvatarContextMenuEnabled" 在 LocalScript 中启用角色上下文菜单。ACM 最好用于没有预定义行为来点击其他用户的游戏中。

使用以下代码示例在 LocalScript 中启用 ACM:


-- 在 LocalScript 中运行,理想情况下在 "StarterPlayerScripts" 中
local StarterGui = game:GetService("StarterGui")
StarterGui:SetCore("AvatarContextMenuEnabled", true)

如果需要检测 ACM 是否启用,可以使用以下代码返回 ACM 当前状态的布尔值:


---返回一个布尔值,指示 ACM 当前是否启用。
StarterGui:GetCore(AvatarContextMenuEnabled)

打开和关闭 ACM

启用后,可以通过 StarterGui 以编程方式打开和关闭 ACM。

要以编程方式打开 ACM,请使用以下代码:


-- 使用 StarterGui:SetCore,其中 targetPlayer 是有效的 Player 对象
StarterGui:SetCore("AvatarContextMenuTarget", targetPlayer)

要以编程方式关闭 ACM,请使用以下代码:


StarterGui:SetCore("AvatarContextMenuTarget", nil)

菜单选项

您可以通过脚本 添加删除 操作。默认情况下,菜单包含以下选项:

菜单选项描述
好友向所选用户发送一条好友请求。
聊天在游戏内聊天中与所选用户打开私人对话。
查看打开一个窗口查看所选用户的外观。
挥手向所选用户发起挥手动画。

一旦 ACM 打开,用户可以在角色选择转盘中滚动并选择其他用户。角色根据距离所选角色的远近进行排序。菜单仅在打开时更新,滚动时可用用户列表会重复出现。

添加菜单选项

启用后,可以将特定于游戏的操作添加到 ACM 中。例如,游戏可能允许交易请求、加入派对选项或其他特殊互动。

以下示例演示如何将自定义操作添加到角色上下文菜单:


local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local player = Players.LocalPlayer
-- 将一个函数连接到 "BindableEvent"
local bindableEvent = Instance.new("BindableEvent")
local function onCustomACMAction(targetPlayer)
-- 在此时,可以对 RemoteFunction 调用 InvokeServer() 通知服务器选择的内容
print("ACM 事件被 " .. player.Name .. " 在 " .. targetPlayer.Name .. " 上选择")
end
bindableEvent.Event:Connect(onCustomACMAction)
-- 使用 SetCore() 和 "AddAvatarContextMenuOption" 添加 ACM 选项
local options = {"自定义 ACM 操作", bindableEvent}
StarterGui:SetCore("AddAvatarContextMenuOption", options)

删除菜单选项

您可以通过引用自定义操作名称或默认的 Enum.AvatarContextMenuOption 枚举来删除 ACM 中的自定义选项和默认的添加好友、聊天、查看和挥手选项。

使用以下代码删除默认和自定义菜单选项:


-- 移除 "自定义 ACM 操作" 选项
StarterGui:SetCore("RemoveAvatarContextMenuOption", "自定义 ACM 操作")
-- 通过引用 AvatarContextMenuOption.Friend Enum 移除默认的 "好友" 选项
StarterGui:SetCore("RemoveAvatarContextMenuOption", Enum.AvatarContextMenuOption.Friend)

自定义菜单外观

要更改角色上下文菜单的外观,请调用 StarterGui:SetCore(),使用选项 "AvatarContextMenuTheme",提供一个参数和数值的表以调整菜单外观。

ACM 用户界面包括以下部分:

A. 名称标签:正在互动的角色的用户名。

B. 按钮框架:包含所有 ACM 按钮的框架。

C. 按钮:默认或自定义 ACM 操作的单个按钮。

外观参数

这是 ACM 的自定义参数:

背景

BackgroundColorACM 整体背景的 Color3(在不使用背景图像时最有用)。
BackgroundTransparencyACM 整体背景的透明度值(0–1)(在不使用背景图像时最有用)。
BackgroundImageACM 背景的有效资产 ID 的图像。
BackgroundImageTransparency背景图像的透明度值(0–1)。
BackgroundImageScaleType背景图像缩放的 Enum.ScaleType 枚举。
BackgroundImageSliceCenter指定当 BackgroundImageScaleType 设置为 Enum.ScaleType.Slice 时九切片图像的中心的 Rect

名称标签

NameTagColor显示当前正在与之互动的玩家的条的 Color3
NameUnderlineColor名称标签与操作按钮之间的细线的 Color3

按钮框架

ButtonFrameColor包含操作按钮的区域(框架)的 Color3
ButtonFrameTransparency按钮框架区域的透明度值(0–1)。

按钮

ButtonColorACM 操作按钮的背景的 Color3
ButtonTransparency操作按钮的背景颜色的透明度值(0–1)。
ButtonHoverColor操作按钮的 "悬停" 状态的 Color3
ButtonHoverTransparency操作按钮的 "悬停" 颜色的透明度值(0–1)。
ButtonUnderlineColor分隔每个操作按钮的细线的 Color3
ButtonImage按钮背景的有效资产 ID 的图像。
ButtonImageScaleType按钮图像缩放的 Enum.ScaleType 枚举。
ButtonImageSliceCenter指定当 ButtonImageScaleType 设置为 Enum.ScaleType.Slice 时九切片图像的中心的 Rect

文本

Font名称标签和按钮文本的 Enum.Font 枚举值。
TextColorACM 中所有文本的 Color3
TextScale缩放每个元素的默认文本大小的浮点值。

各种图像

LeaveMenuImageACM 关闭按钮的图像资产 ID。
ScrollLeftImage转盘 "向左滚动" 按钮的图像资产 ID。
ScrollRightImage转盘 "向右滚动" 按钮的有效图像资产 ID。

选定角色

SelectedCharacterIndicator在角色头顶上方悬浮的 MeshPart,表示它们被选中。

尺寸和位置

SizeACM 整体大小的 UDim2
MinSize指定 ACM 最小尺寸的 Vector2
MaxSize指定 ACM 最大尺寸的 Vector2
AspectRatio指定 ACM 的相对宽度和高度的浮点值。
AnchorPointACM 的 AnchorPoint
OnScreenPosition指定 ACM 在屏幕上的位置的 UDim2(它打开时的过渡位置)。
OffScreenPosition指定 ACM 的非屏幕位置的 UDim2(它在打开/关闭时的过渡位置)。

示例自定义

以下代码示例使用一些基本参数自定义 ACM 主题:


local StarterGui = game:GetService("StarterGui")
StarterGui:SetCore("AvatarContextMenuTheme", {
BackgroundImage = "",
BackgroundTransparency = 0.5,
BackgroundColor = Color3.fromRGB(111, 145, 242),
NameTagColor = Color3.fromRGB(0, 0, 200),
NameUnderlineColor = Color3.fromRGB(213, 233, 255),
ButtonFrameColor = Color3.fromRGB(15, 24, 65),
ButtonFrameTransparency = 0.2,
ButtonUnderlineColor = Color3.fromRGB(213, 233, 255),
Font = Enum.Font.SciFi
})
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。