語音聊天

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

語音聊天 是一項功能,允許您與其他玩家進行實時的語音交流。它僅適用於支持最多 100 名玩家的地方。

兩名用戶在遊戲中進行語音聊天。

啟用語音聊天

對於所有新遊戲,經過驗證的 13 歲以上用戶默認啟用語音聊天,並且最多支持 100 名玩家。啟用語音聊天是使用語音轉文本 API 的必要條件。

要為現有遊戲啟用語音或為新遊戲禁用語音:

  1. 在 Studio 中打開您的遊戲。
  2. 打開 文件體驗設置
  3. 在窗口左側導航到 通信 標籤。
  4. 切換 啟用語音聊天 到您想要的設置。
  5. 可選
    為了促進玩家之間的更好交流,切換 啟用相機 以允許符合條件的玩家根據他們的動作來動畫化他們的角色。
  6. 發布 該地方以保存更改。

設置最大玩家數

如果您之前將地方的最大玩家數設置為超過 100,則需要將其減少以支持語音聊天。

  1. 創作者儀表板 中選擇遊戲,然後導航到 配置地方
  2. 選擇所需的地方,然後在左側列中導航到訪問。
  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)

非空間

根據您的遊戲需求,聽到其他人的音量相等可能更有意義,而不考慮他們的地理位置。如果您 禁用默認語音聊天,則可以通過以下 ScriptServerScriptService 中實現非空間語音聊天:

非距離聊天
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 是我們在美國及其他國家地區的部分註冊與未註冊商標。