语音聊天

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

语音聊天是一项使您与其他玩家之间可以进行实时口头交流的功能。此功能仅适用于最多支持100名玩家的场所。

两个用户在游戏中进行语音聊天。

启用语音聊天

对于所有通过验证的13岁以上用户,语音聊天在最多支持100名玩家的新游戏中默认启用。要激活现有游戏的语音聊天或禁用新游戏的语音聊天,请执行以下步骤:

  1. 在Studio中打开您的游戏。
  2. 打开文件 ⟩ 体验设置
  3. 在窗口左侧导航到沟通选项卡。
  4. 启用语音聊天切换到您想要的设置。
  5. 可选
    为了在您的游戏中提高玩家之间的沟通,启用启用相机,允许符合条件的玩家根据其动作来为其角色进行动画。
  6. 发布该场所以保存更改。

通过启用此设置,符合条件的13岁以上用户可以选择加入您游戏的语音聊天。启用语音聊天是使用语音转文本API所必需的。

设置最大玩家数

如果您之前将场所的最大玩家数设置为超过100,则需要将其减少以支持语音聊天。

  1. 体验设置窗口的左侧导航中,选择场所。您游戏中的每个场所都会显示。
  2. 点击超过100名玩家的场所旁的**⋯按钮,然后选择配置场所**。
  3. 最大玩家字段中,输入小于或等于100的任何数字。
  4. 点击保存按钮,然后发布以保存更改。

当您将场所的最大玩家数量更新为少于100时,可能会有已经配置为不同更高数字的服务器。由于这些服务器不支持语音聊天,因此建议重启服务器

自定义语音行为

语音聊天默认是基于距离的,参与者的音量会根据彼此之间的距离进行调整。但是,您可以将UseAudioApi设置为Enabled来控制声音的设置和使用方式。

如果VoiceChatService尚未出现:

  1. 右键单击资源管理器窗口,选择上下文菜单中的显示服务…

  2. 在弹出窗口中选择VoiceChatService并点击插入。该服务将出现在资源管理器层次结构中。

    资源管理器层次中的VoiceChatService
  3. 选择VoiceChatService,确保在属性窗口中将UseAudioApi设置为Enabled。这可能已经为您完成。

基于团队的聊天

要实现仅允许队友相互听见的Team聊天,您可以在ServerScriptService中使用以下Script

团队聊天

local Teams = game:GetService("Teams")
local function findAudioInput(forPlayer : Player) : AudioDeviceInput?
-- 假设每个玩家只有一个AudioDeviceInput,父级为Player对象
-- 如果VoiceChatService.EnableDefaultVoice为true,则会提供此内容
-- 如果您的场所将AudioDeviceInput对象放置在其他位置,可能需要重新调整一般性
return forPlayer:FindFirstChildWhichIsA("AudioDeviceInput")
end
local function onTeamChanged(player : Player)
local team = player.Team
if not team then return end
local device = findAudioInput(player)
if not device then return end
-- 仅允许队友相互听见
device.AccessType = Enum.AccessModifierType.Allow
local allowed = {}
for _, player : Player in team:GetPlayers() do
table.insert(allowed, player.UserId)
end
device:SetUserIdAccessList(allowed)
end
local function onTeamAdded(team : Team)
team.PlayerAdded:Connect(onTeamChanged)
team.PlayerRemoved:Connect(onTeamChanged)
end
for _, team : Team in Teams:GetTeams() do
onTeamAdded(team)
end
Teams.ChildAdded:Connect(function(child : Instance)
if child:IsA("Team") then
onTeamAdded(child)
end
end)

非空间聊天

根据您的游戏需求,可能更合理的是无论地理位置如何都能以相同音量听见其他人。如果您禁用默认语音聊天,则可以通过在ServerScriptService中实现非空间语音聊天,使用以下Script

非距离聊天

local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local function wireUp(source : Instance, target : Instance)
local wire = Instance.new("Wire")
wire.SourceInstance = source
wire.TargetInstance = target
wire.Parent = source
end
-- 为每个人的声音设置全局音量滑块
local volumeSlider = Instance.new("AudioFader", Workspace)
local output = Instance.new("AudioDeviceOutput", Workspace)
wireUp(volumeSlider, output)
local function onPlayerAdded(player : Player)
local device = Instance.new("AudioDeviceInput", player)
device.Player = player
-- 将每个新玩家的麦克风输入路由到全局音量滑块
wireUp(device, volumeSlider)
end
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
LocalScript

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onDescendantAdded(descendant : Instance)
if descendant:IsA("Wire") then
descendant:Destroy()
end
end
for _, descendant in player:GetDescendants() do
onDescendantAdded(descendant)
end
player.DescendantAdded:Connect(onDescendantAdded)

在特定场所禁用

如果您不希望在游戏中的每个场所启用语音聊天,您可以在特定的场所中禁用语音聊天,这些场所本来是符合语音聊天条件的。

要在游戏中的特定场所禁用语音聊天:

  1. 右键单击资源管理器窗口,选择上下文菜单中的显示服务…

  2. 在弹出窗口中选择VoiceChatService并点击插入。该服务将出现在资源管理器层次结构中。

    资源管理器层次中的VoiceChatService
  3. 选择VoiceChatService,在属性窗口中禁用EnableDefaultVoice

  4. 发布该场所以保存更改,并重启服务器以确保更改对所有当前运行您游戏的服务器生效。

检查状态

您可以通过在LocalScript中调用IsVoiceEnabledForUserIdAsync(),或者在Script中将RunContext设置为Enum.RunContext.Client来检查玩家是否启用了语音聊天。

客户端脚本 - 检查语音聊天状态

local Players = game:GetService("Players")
local VoiceChatService = game:GetService("VoiceChatService")
local localPlayer = Players.LocalPlayer
local success, enabled = pcall(function()
return VoiceChatService:IsVoiceEnabledForUserIdAsync(localPlayer.UserId)
end)
if success and enabled then
print("语音聊天已启用!")
end
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。