Dodaj czat głosowy

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Czat głosowy to funkcja czatu oparta na bliskości, która symuluje realistyczną komunikację, dostosowując głośność mówców w miarę zbliżania się lub oddalania od siebie w przestrzeni 3D. Dzięki możliwości rozmowy przez mikrofony, gracze mogą wspólnie socjalizować się i strategizować w czasie rzeczywistym na całym świecie, aby zrealizować cele Twojej gry.

Korzystając z pliku .rbxl Gingerbread Island - Czat Głosowy jako odniesienia, ten samouczek pokazuje, jak włączyć różne formy czatu głosowego do swojej rozgrywki, w tym wskazówki dotyczące:

  • Sortowania graczy w zespoły, które mogą używać czatu głosowego tylko z członkami swojego zespołu.
  • Pozwalania graczom na tymczasowe aktywowanie mikrofonu, gdy naciskają określony przycisk na swoim urządzeniu.
  • Konfigurowania okresów, w których czat głosowy jest włączony lub wyłączony.

Przeglądając poniższe sekcje wraz z przykładem, możesz dostosować każdy fragment kodu, aby lepiej spełniał potrzeby Twojego czatu głosowego.

Skonfiguruj ustawienia

Aby czat zespołowy, czat aktywowany przyciskiem lub czat oparty na czasie działały poprawnie, musisz skonfigurować swoje ustawienia czatu głosowego, aby włączyć czat głosowy i utworzyć odpowiednie obiekty audio niezbędne do odbierania i emitowania dźwięku w środowisku 3D.

Gdy gracze dołączają do Twojej gry, Twoje ustawienia czatu głosowego teraz:

Poniższe sekcje szczegółowo opisują trzy unikalne konfiguracje czatu głosowego przy użyciu tych ustawień. Podczas gdy śledzisz przykład pliku Gingerbread Island - Czat Głosowy, możesz włączyć odpowiedni wyłączony skrypt w oknie Eksplorator, aby przetestować ich działanie. Aby upewnić się, że każdy z nich działa poprawnie, upewnij się, że ponownie wyłączysz skrypt przed przejściem do następnej konfiguracji.

Wyłączone skrypty w oknie Eksplorator

Dodaj czat zespołowy

Czat zespołowy to konfiguracja czatu głosowego, w której tylko gracze w tym samym zespole mogą mówić lub słyszeć się nawzajem w grze. Integracja czatu zespołowego w Twojej rozgrywce jest przydatna, gdy chcesz, aby gracze współpracowali i strategizowali razem, aby rozwiązać problemy w grze, takie jak koordynowanie informacji o pozycjach drużyny wroga, zasobach i zadaniach.

Aby odtworzyć czat głosowy zespołu w przykładowym pliku Gingerbread Island - Czat Głosowy:

  1. W oknie Eksplorator wstaw Skrypt do ServerScriptService.

  2. Zmień nazwę skryptu na TeamChat, a następnie wklej poniższy kod do skryptu:

    local Teams = game:GetService("Teams")
    local Players = game:GetService("Players")
    local redTeam = Instance.new("Team", Teams)
    redTeam.TeamColor = BrickColor.new("Bright red")
    redTeam.AutoAssignable = true
    redTeam.Name = "Czerwony Zespół"
    local blueTeam = Instance.new("Team", Teams)
    blueTeam.TeamColor = BrickColor.new("Bright blue")
    blueTeam.AutoAssignable = true
    blueTeam.Name = "Niebieski Zespół"
    local function getUserIds(team : Team) : {number}
    local userIds = {}
    for _, player : Player in team:GetPlayers() do
    table.insert(userIds, player.UserId)
    end
    return userIds
    end
    local function getDevices(team : Team) : {AudioDeviceInput}
    local devices = {}
    for _, player : Player in team:GetPlayers() do
    local device : AudioDeviceInput = player:FindFirstChild("AudioDeviceInput")
    if not device then
    continue
    end
    table.insert(devices, device)
    end
    return devices
    end
    local function updateTeam(team : Team)
    local users = getUserIds(team)
    for _, device in getDevices(team) do
    device.AccessType = Enum.AccessModifierType.Allow
    device:SetUserIdAccessList(users)
    end
    end
    local function onDeviceAdded(device : AudioDeviceInput)
    local player : Player = device.Parent
    if player.Team then
    updateTeam(player.Team)
    end
    end
    local function onPlayerAdded(player : Player)
    local device = player:FindFirstChild("AudioDeviceInput")
    if device then
    onDeviceAdded(device)
    end
    player.ChildAdded:Connect(function(child)
    if child.Name == "AudioDeviceInput" then
    onDeviceAdded(child)
    end
    end)
    end
    updateTeam(blueTeam)
    updateTeam(redTeam)
    for _, player in Players:GetPlayers() do
    onPlayerAdded(player)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
    blueTeam.PlayerAdded:Connect(function() updateTeam(blueTeam) end)
    blueTeam.PlayerRemoved:Connect(function() updateTeam(blueTeam) end)
    redTeam.PlayerAdded:Connect(function() updateTeam(redTeam) end)
    redTeam.PlayerRemoved:Connect(function() updateTeam(redTeam) end)

    Skrypt zaczyna od uzyskania usług Teams i Players, aby móc korzystać z ich funkcjonalności do sortowania graczy w zespoły, gdy tylko dołączają do gry. Na przykład, bez dodatkowego wysiłku w skryptowaniu, usługa Teams obsługuje takie działania jak:

    • Równomierne sortowanie i balansowanie graczy w każdym zespole.
    • Grupowanie graczy pod ich zespołem na tablicy wyników.
    • Zabarwianie nazw graczy w przestrzeni 3D na odpowiadający kolor zespołu.

    Korzystając z tej usługi, skrypt tworzy dwa odrębne obiekty Team z różnymi wartościami właściwości Color, aby reprezentować każdy zespół: jasnoczerwony dla jednego zespołu i jasnoniebieski dla drugiego.

    Skrypt następnie definiuje trzy funkcje, w których odbywa się większość pracy związanej z konfiguracją czatu głosowego zespołu:

    • getUserIds - Zwraca tablicę userID dla wszystkich graczy w zespole.
    • getDevices - Zwraca tablicę obiektów AudioDeviceInput dla wszystkich graczy w zespole. Każdy obiekt AudioDeviceInput reprezentuje fizyczny mikrofon gracza w rzeczywistości.
    • updateTeam - Pobiera wszystkie userID z getUserIds, iteruje po obiektach AudioDeviceInput z getDevices, ustawia ich właściwość Enum.AccessModifierType na Allow, aby tylko userID w każdym zespole mogły słyszeć mikrofony swoich kolegów z drużyny, a następnie aktualizuje SetUserIdAccessList z userID z zespołu.

    Reszta skryptu kontroluje, jak te funkcje i nasłuchiwacze zdarzeń współpracują ze sobą:

    • Gdy nowy gracz dołącza do gry, skrypt sprawdza, czy gracz ma mikrofon i aktualizuje jego zespół.
    • Gdy skrypt wykryje nowy obiekt AudioDeviceInput, wywołuje updateTeam dla odpowiedniego zespołu czerwonego lub niebieskiego.
    • Gdy gracze dołączają lub opuszczają grę, skrypt łączy się z wydarzeniami PlayerAdded i PlayerRemoved, aby zaktualizować ustawienia każdego zespołu.
  3. Przetestuj grę z kilkoma przyjaciółmi, aby upewnić się, że członkowie zespołu z każdego zespołu mogą słyszeć się nawzajem tylko przez czat głosowy.

Dodaj czat aktywowany przyciskiem

Czat aktywowany przyciskiem to konfiguracja czatu głosowego, w której gracze mogą aktywować swój mikrofon w grze tylko wtedy, gdy naciskają i przytrzymują określony przycisk na swoim urządzeniu. Integracja czatu aktywowanego przyciskiem w Twojej rozgrywce jest przydatna, gdy chcesz, aby gracze mieli większą prywatność i kontrolę nad tym, kiedy chcą być słyszani wśród innych graczy i hałasu otoczenia.

Aby odtworzyć czat głosowy aktywowany przyciskiem w przykładowym pliku Gingerbread Island - Czat Głosowy:

  1. W oknie Eksplorator wstaw Skrypt do ReplicatedStorage.

  2. W oknie Właściwości ustaw RunContext na Client, aby skrypt kontrolował tylko mikrofon lokalnego gracza.

  3. Zmień nazwę skryptu na PushToChat, a następnie wklej poniższy kod do skryptu:

    local Players = game:GetService("Players")
    local UserInputService = game:GetService("UserInputService")
    local audioIn: AudioDeviceInput = Players.LocalPlayer:WaitForChild("AudioDeviceInput")
    local pushToTalkKey = Enum.KeyCode.V
    audioIn.Muted = true
    UserInputService.InputBegan:Connect(function(input: InputObject)
    if input.KeyCode == pushToTalkKey then
    audioIn.Muted = false
    end
    end)
    UserInputService.InputEnded:Connect(function(input: InputObject)
    if input.KeyCode == pushToTalkKey then
    audioIn.Muted = true
    end
    end)

    Skrypt zaczyna od uzyskania:

    • Usługi Players, aby móc odwołać się do wszystkich graczy w grze.
    • Usługi UserInputService, aby móc sprawdzić, kiedy gracz naciska przyciski na swoim urządzeniu.
    • Obiektu AudioDeviceInput lokalnego gracza, czyli fizycznego mikrofonu na jego urządzeniu.

    Skrypt następnie:

    • Ustawia klawisz V jako przycisk, który gracz musi nacisnąć i przytrzymać, aby mówić do swojego mikrofonu.
    • Wycisza mikrofon gracza.

    Reszta skryptu ustawia dwa nasłuchiwacze zdarzeń dla InputBegan i InputEnded z UserInputService. Gdy naciskają klawisz V, zdarzenie InputBegan wycisza mikrofon gracza, a gdy zwalniają klawisz V, zdarzenie InputEnded ponownie wycisza ich mikrofon.

  4. Przetestuj grę, aby upewnić się, że gracze mogą słyszeć się nawzajem przez czat głosowy tylko wtedy, gdy naciskają klawisz V.

Dodaj czat oparty na czasie

Czat oparty na czasie to konfiguracja czatu głosowego, w której gracze mogą mówić i słyszeć się nawzajem tylko w określonym czasie. Integracja czatu opartego na czasie w Twojej rozgrywce jest przydatna, gdy chcesz, aby gracze starannie planowali, jak komunikują się ze sobą w określonych fazach, takich jak podczas dyskusji opartych na rundach lub po scenkach przerywnikowych.

Aby odtworzyć czat głosowy oparty na czasie w przykładowym pliku Gingerbread Island - Czat Głosowy:

  1. W oknie Eksplorator wstaw Skrypt do ServerScriptService.

  2. Zmień nazwę skryptu na TimeBasedChat, a następnie wklej poniższy kod do skryptu:

    local Players = game:GetService("Players")
    local muteAll = false
    local function toggleMuteAll()
    muteAll = not muteAll
    for _, player in Players:GetPlayers() do
    local device : AudioDeviceInput = player:FindFirstChild("AudioDeviceInput")
    if not device then
    continue
    end
    device.Muted = muteAll
    end
    end
    while true do
    task.wait(15) -- co 15 sekund
    toggleMuteAll() -- albo pozwól ludziom mówić, albo zapobiegaj ich mówieniu
    end

    Ten skrypt zaczyna od uzyskania usługi Players, aby móc odwołać się do jej funkcjonalności w zarządzaniu wszystkimi graczami w grze. Następnie ustawia flagę muteAll na false, którą następnie wykorzystuje funkcja toggleMuteAll do przełączania czatu głosowego włączonego i wyłączonego.

    Przyjrzyjmy się funkcji toggleMuteAll:

    • Zaczyna od iteracji przez wszystkich graczy w grze za pomocą Players.GetPlayers.
    • Dla każdego gracza sprawdza, czy ma obiekt podrzędny AudioDeviceInput, czyli fizyczny mikrofon na swoim urządzeniu.
    • Jeśli tak, funkcja ustawia właściwość AudioDeviceInput obiektu Muted na wartość muteAll. Na przykład, jeśli muteAll jest true, mikrofon gracza jest wyłączony, a jeśli muteAll jest false, mikrofon gracza jest włączony.

    Skrypt następnie wchodzi w nieskończoną pętlę, czekając 15 sekund, aby wyciszyć i odciszyć wszystkie obiekty AudioDeviceInput.

  3. Przetestuj grę, aby upewnić się, że gracze mogą słyszeć się nawzajem przez czat głosowy w 15-sekundowych odstępach.

©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.