語音聊天

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

語音聊天是一項可以使您與其他玩家進行實時口頭交流的功能。此功能僅適用於最多支持100名玩家的地方。

兩名用戶在遊戲內語音聊天。

啟用語音聊天

對於所有最多可容納100名玩家的新遊戲,已通過驗證的13歲以上用戶默認啟用語音聊天。要為現有遊戲啟用語音或禁用新遊戲的語音:

  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)

非空間性

根據您的遊戲需求,讓所有人都以相等音量相互聽見,無論他們的地理位置如何,可能會更有意義。如果您禁用默認語音聊天,那麼可以通過以下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 是我們在美國及其他國家地區的部分註冊與未註冊商標。