虚拟形象上下文菜单(ACM)使用户更容易相互交流。当在体验中启用 ACM 时,用户可以走到另一个用户的角色那里,点击他们打开一个小菜单,包含几个默认选项。玩家可以发送好友请求、开始私人聊天、查看用户的个人资料或波浪。
在启用ACM之后,您可以通过以下方式自定义ACM:
- 通过编程 打开和关闭 ACM 给特定用户。
- 自定义 ACM 外观 以创建独特的用户界面。
启用虚拟形象上下文菜单
虚拟形象上下文菜单必须使用 StarterGui:SetCore() 选项“AvatarContextMenuEnabled”在 LocalScript 中启用。ACM最好用于那些没有预定义行为的体验,以便单击其他用户。
使用以下代码示例来启用 ACM 在 LocalScript :
-- 在本地脚本中运行,最好在 "StarterPlayerScripts" 中local StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuEnabled", true)
如果您需要检查是否启用 ACM,您可以使用以下代码返回 ACM 当前状态的 boolean:
--返回一个指示是否启用 ACM 的 boolean 值。StarterGui:GetCore(AvatarContextMenuEnabled)
打开并关闭 ACM
一旦启用,您可以使用 StarterGui 程序化打开和关闭 ACM 程序。
要通过编程打开 ACM,请使用以下验证码:
-- 使用启动器GUI:在目标玩家是一个有效的玩家对象时设置核心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 event selected by " .. player.Name .. " on " .. targetPlayer.Name)
end
bindableEvent.Event:Connect(onCustomACMAction)
-- 使用 SetCore() 添加 ACM 选项,并使用 "AddAvatarContextMenuOption"
local options = {"Custom ACM Action", bindableEvent}
StarterGui:SetCore("AddAvatarContextMenuOption", options)
移除菜单选项
您可以通过参考自定义行动名称或默认 Enum.AvatarContextMenuOption 枚列来从 ACM 中删除自定义和默认的“添加好友、聊天、查看和波浪”选项。
使用以下代码来删除默认菜单选项和自定义菜单选项:
-- 移除“自定义 ACM 行动”选项StarterGui:SetCore("RemoveAvatarContextMenuOption", "Custom ACM Action")-- 通过引用 AvatarContextMenuOption.Friend Enum 去掉默认的“朋友”选项StarterGui:SetCore("RemoveAvatarContextMenuOption", Enum.AvatarContextMenuOption.Friend)
自定义菜单外观
要更改虚拟形象上下文菜单的外观,请调用 StarterGui:SetCore() 并将选项 “AvatarContextMenuTheme” 设置为“AvatarContextMenuTheme”,提供一个包含参数和值的表来调整菜单外观。
ACM用户界面包括以下部分:

A. 名称标签:与互动的角色的用户名。
B. 按钮框:包含所有 ACM 按钮。
C. 按钮:默认或自定义 ACM 操作的单个按钮。
外观参数
这些是与 ACM 配置的自定义参数:
背景
背景颜色 | 一个 Color3 为 ACM 的整体背景(最有用的情况是不使用背景图像时) |
背景透明 | ACM的整体背景透明值(0–1)(最有用时不使用背景图像)。 |
背景图像 | ACM 背景的图像的有效资产 ID。 |
背景图像透明度 | 背景图像的透明度值(0–1)。 |
背景图像缩放类型 | 一个 Enum.ScaleType 枚列用于背景图像缩放。 |
背景图像切割中心 | 一个 Rect 指定九层图像中心的特性,当背景图像缩放类型设置为 Enum.ScaleType.Slice 时。 |
名称标签
按钮框
按钮框颜色 | 一个 Color3 对于包含行动按钮的部分(框)。 |
按钮框透明 | 按钮框部分的透明值(0–1)。 |
按钮
按钮颜色 | 一个 Color3 为 ACM 行动按钮的背景。 |
按钮透明度 | 行动按钮背景颜色的透明值(0–1)。 |
按钮悬停颜色 | 一个 Color3 对于行动按钮的“悬停悬浮信息状态。 |
按钮悬停透明度 | 行动按钮的“悬停”颜色的透悬浮信息值(0–1)。 |
按钮下线颜色 | 一个 Color3 用于将每个行动按钮分开的薄线。 |
按钮图像 | 按钮背景的有效资产 ID 的图像。 |
按钮图像缩放类型 | 一个 Enum.ScaleType 枚列用于按钮图像缩放。 |
按钮图像切割中心 | 一个 Rect 指定九层图像中心的特性,当按钮图像缩放类型设置为 Enum.ScaleType.Slice 时。 |
文本
各种图像
离开菜单图像 | ACM关闭按钮的图像ID。 |
滚动左图像 | 车ousel“滚动左”按钮的图像 ID。 |
向右滚动图像 | 车ousel“滚动向右”按钮的有效资产 ID 的图像。 |
已选择的角色
已选择的角色指示器 | 悬停在角色头顶上的 MeshPart ,用于表示他们已被选择。 |
大小和位置
大小 | 一个 UDim2 为 ACM 的整体尺寸。 |
最小尺寸 | A Vector2 指定 ACM 的最小尺寸。 |
最大尺寸 | 一个 Vector2 指定 ACM 的最大尺寸。 |
方向比率 | 一个浮动值,用于指定 ACM 的相对宽度和高度。 |
锚点 | ACM 的 AnchorPoint。 |
屏幕位置 | A UDim2 指定 ACM 的屏幕位置(打开时它青少年的位置) |
关闭屏幕位置 | A UDim2 指定 ACM 的屏幕外位置(打开/关闭时从/到哪里的位置) |
示例自定义
以下代码示例使用一些基本参数来自定义 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})
