Czat głosowy to funkcja umożliwiająca komunikację w czasie rzeczywistym za pomocą mowy między tobą a innymi graczami. Jest dostępna tylko dla miejsc obsługujących maksymalnie 100 graczy.

Włącz czat głosowy
Czat głosowy jest domyślnie włączony dla zweryfikowanych użytkowników powyżej 13 roku życia we wszystkich nowych grach z maksymalnie 100 graczami. Aby aktywować czat w istniejących grach lub wyłączyć go dla nowych:
- Otwórz swoją grę w Studio.
- Otwórz Plik ⟩ Ustawienia doświadczenia.
- Przejdź do zakładki Komunikacja po lewej stronie okna.
- Przełącz Włącz czat głosowy na pożądane ustawienie.
- OPCJONALNEDla lepszej komunikacji między graczami w grze, włącz Włącz kamerę, aby umożliwić kwalifikującym się graczom animowanie swojej postaci zgodnie z ich ruchem.
- Opublikuj miejsce, aby zapisać zmiany.
Włączając to ustawienie, kwalifikujący się użytkownicy powyżej 13 roku życia mogą zarejestrować się do czatu głosowego w twoim doświadczeniu. Włączenie czatu głosowego jest wymagane do używania API rozpoznawania mowy.
Ustaw maksymalną liczbę graczy
Jeśli wcześniej ustawiłeś maksymalną liczbę graczy w danym miejscu na więcej niż 100, będziesz musiał ją zmniejszyć, aby obsłużyć czat głosowy.
- W lewym menu okna Ustawienia doświadczenia wybierz Miejsca. Każde miejsce w twojej grze zostanie wyświetlone.
- Kliknij przycisk ⋯ obok miejsca z więcej niż 100 graczami, a następnie wybierz Konfiguruj miejsce.
- W polu Maks. gracze wpisz liczbę mniejszą lub równą 100.
- Kliknij przycisk Zapisz, a następnie opublikuj, aby zapisać zmiany.
Gdy zaktualizujesz maksymalną liczbę graczy w danym miejscu do mniej niż 100, mogą istnieć serwery skonfigurowane do większej, innej liczby. Ponieważ te serwery nie będą obsługiwać czatu głosowego, zaleca się ponowne uruchomienie serwerów.
Dostosuj zachowanie głosu
Czat głosowy jest domyślnie oparty na odległości, dostosowując głośność uczestników na podstawie tego, jak blisko siebie są. Możesz jednak ustawić UseAudioApi na Enabled, aby przejąć kontrolę nad tym, jak głosy są ustawione i używane w twojej grze.
Jeśli VoiceChatService nie pojawi się już:
Kliknij prawym przyciskiem myszy w oknie Eksplorator i wybierz Pokaż usługi… z menu kontekstowego.
Wybierz VoiceChatService w oknie popup i kliknij Wstaw. Usługa pojawi się w hierarchii Eksploratora.

Z VoiceChatService wybranym, upewnij się, że UseAudioApi jest ustawione na Enabled w oknie Właściwości. To może być już dla ciebie zrobione.
Na podstawie drużyn
Aby wdrożyć czat oparty na Team, gdzie tylko członkowie drużyny mogą się słyszeć, możesz użyć poniższego Script w ServerScriptService:
Czat drużynowy
local Teams = game:GetService("Teams")
local function findAudioInput(forPlayer : Player) : AudioDeviceInput?
-- Zakłada, że istnieje tylko jedno AudioDeviceInput na gracza, umieszczone w obiekcie gracza
-- To jest dla ciebie zapewnione, jeśli VoiceChatService.EnableDefaultVoice jest prawdą
-- Może potrzebować przeróbki w zakresie ogólności, jeśli twoje miejsce umieszcza obiekty AudioDeviceInput gdzie indziej
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
-- Zezwól tylko członkom drużyny na słyszenie się nawzajem
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)
Niespatialny
W zależności od potrzeb twojej gry, może mieć więcej sensu słyszeć innych z równą głośnością, bez względu na ich lokalizację geograficzną. Jeśli wyłączysz domyślny czat głosowy, możesz następnie wdrożyć czat głosowy niespatialny przez odpowiedni Script w ServerScriptService:
Czat niena podstawie odległości
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
-- Ustaw globalny suwak głośności dla głosu każdego gracza
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
-- Kieruj wejście mikrofonu każdego nowego gracza do globalnego suwaka głośności
wireUp(device, volumeSlider)
end
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Skrypt lokalny
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)
Wyłącz dla danego miejsca
Jeśli nie chcesz włączać czatu głosowego dla każdego miejsca w swojej grze, możesz go wyłączyć w konkretnych miejscach, które w przeciwnym razie byłyby kwalifikowane do czatu głosowego.
Aby wyłączyć czat głosowy dla konkretnego miejsca w grze:
Kliknij prawym przyciskiem myszy w oknie Eksplorator i wybierz Pokaż usługi… z menu kontekstowego.
Wybierz VoiceChatService w oknie popup i kliknij Wstaw. Usługa pojawi się w hierarchii Eksploratora.

Z VoiceChatService wybranym, wyłącz EnableDefaultVoice w oknie Właściwości.
Opublikuj miejsce, aby zapisać zmiany i ponownie uruchom serwery, aby upewnić się, że zmiana wejdzie w życie dla wszystkich serwerów aktualnie działających w twojej grze.
Sprawdź status
Możesz sprawdzić, czy gracz włączył czat głosowy, wywołując IsVoiceEnabledForUserIdAsync() w LocalScript lub w Script z RunContext ustawionym na Enum.RunContext.Client.
Skrypt Klienta - Sprawdź status czatu głosowego
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("Czat głosowy włączony!")
end