Inizia
Tutorial intermedi

Aggiungi chat vocale

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Chat vocale è una funzione di chat basata sulla prossimità che simula una comunicazione realistica regolando il volume dei giocatori che parlano man mano che si avvicinano o si allontanano l'uno dall'altro nello spazio 3D. Permettendo ai giocatori di parlare tra loro con i loro microfoni, possono socializzare e strategizzare insieme in tempo reale in tutto il mondo per completare gli obiettivi della tua esperienza.

Utilizzando il file .rbxl Gingerbread Island - Chat Vocale come riferimento, questo tutorial ti mostrerà come incorporare diverse forme di chat vocale nel tuo gameplay, inclusa la guida su:

  • Suddividere i giocatori in squadre che possono usare la chat vocale solo con i loro compagni di squadra.
  • Consentire ai giocatori di attivare temporaneamente il microfono mentre premono un determinato pulsante sul loro dispositivo.
  • Configurare periodi di tempo in cui la chat vocale è abilitata o disabilitata.

Mentre esamini le seguenti sezioni insieme al campione, puoi adattare ciascun frammento di codice per soddisfare meglio le esigenze della tua chat vocale.

Configura le impostazioni

Affinché la chat di squadra, il push per la chat o la chat basata sul tempo funzionino correttamente, devi configurare la tua impostazione della chat vocale per abilitare la chat vocale e creare gli oggetti audio appropriati necessari per catturare ed emettere audio all'interno dell'ambiente 3D.

Quando i giocatori entrano nella tua esperienza, la tua impostazione della chat vocale ora:

Le sezioni seguenti dettagliano tre configurazioni uniche di chat vocale utilizzando queste impostazioni. Seguendo il campione del file di gioco Gingerbread Island - Chat Vocale, puoi abilitare lo script disabilitato corrispondente nella finestra Esplora per testare il loro comportamento. Per assicurarti che ciascuno funzioni correttamente, assicurati di disabilitare di nuovo lo script prima di passare alla configurazione successiva.

Script disabilitati nella finestra Esplora

Aggiungi chat di squadra

Chat di squadra è una configurazione di chat vocale in cui solo i giocatori della stessa squadra possono parlare o sentirsi l'uno con l'altro in un'esperienza. Integrare la chat di squadra nel tuo gameplay è utile quando desideri che i giocatori collaborino e strategizzino insieme per risolvere problemi nelle esperienze, come coordinare informazioni sulle posizioni della squadra nemica, delle risorse e degli incarichi.

Per ricreare la chat vocale di squadra nel file di gioco campione Gingerbread Island - Chat Vocale:

  1. Nella finestra Esplora, inserisci un Script in ServerScriptService.

  2. Rinomina lo script in TeamChat, quindi incolla il seguente codice nello script:


    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 = "Red Team"
    local blueTeam = Instance.new("Team", Teams)
    blueTeam.TeamColor = BrickColor.new("Bright blue")
    blueTeam.AutoAssignable = true
    blueTeam.Name = "Blue Team"
    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)

    Lo script inizia ottenendo i servizi Teams e Players in modo da poter utilizzare la loro funzionalità standard per suddividere i giocatori in squadre non appena entrano nell'esperienza. Ad esempio, senza alcuno sforzo di scripting aggiuntivo, il servizio Teams gestisce azioni come:

    • Ordinare e bilanciare i giocatori uniformemente in ciascuna squadra.
    • Raggruppare i giocatori sotto la loro squadra nella classifica.
    • Colorare i nomi dei giocatori nello spazio 3D con il colore corrispondente alla loro squadra.

    Utilizzando questo servizio, lo script crea due distinti oggetti Team con diversi valori delle proprietà Color per rappresentare ogni squadra: rosso brillante per una squadra e blu brillante per l'altra.

    Lo script poi definisce tre funzioni dove si svolge gran parte del lavoro per impostare la configurazione della chat vocale di squadra:

    • getUserIds - Restituisce un array di userID per tutti i giocatori in una squadra.
    • getDevices - Restituisce un array di oggetti AudioDeviceInput per tutti i giocatori in una squadra. Ogni oggetto AudioDeviceInput rappresenta il microfono fisico di un giocatore nel mondo reale.
    • updateTeam - Recupera tutti gli userID da getUserIds, itera sugli oggetti AudioDeviceInput di getDevices, imposta la loro proprietà Enum.AccessModifierType su Allow in modo che solo gli userID in ciascuna squadra possano sentire i microfoni dei loro compagni di squadra, quindi aggiorna la SetUserIdAccessList con gli userID della squadra.

    Il resto dello script controlla come queste funzioni e i listener di eventi lavorano insieme:

    • Quando un nuovo giocatore si unisce all'esperienza, lo script verifica se il giocatore ha un microfono e aggiorna la sua squadra.
    • Quando lo script rileva un nuovo oggetto AudioDeviceInput, chiama updateTeam per la loro rispettiva squadra rossa o blu.
    • Man mano che i giocatori entrano o escono dall'esperienza, lo script si connette agli eventi PlayerAdded e PlayerRemoved per aggiornare le impostazioni di ciascuna squadra.
  3. Fai un test dell'esperienza con un paio di amici per verificare che i compagni di squadra di ciascuna squadra possano sentirsi solo tra loro attraverso la chat vocale.

Aggiungi push to chat

Push to chat è una configurazione di chat vocale in cui i giocatori possono attivare il loro microfono all'interno di un'esperienza solo mentre premono e tengono premuto un determinato pulsante sul loro dispositivo. Integrare il push to chat nel tuo gameplay è utile quando desideri che i giocatori abbiano maggiore privacy e controllo quando vogliono essere sentiti rispetto agli altri giocatori e ai rumori ambientali.

Per ricreare la chat vocale push nel file di gioco campione Gingerbread Island - Chat Vocale:

  1. Nella finestra Esplora, inserisci un Script in ReplicatedStorage.

  2. Nella finestra Proprietà, imposta RunContext su Client in modo che lo script controlli solo il microfono del giocatore locale.

  3. Rinomina lo script in PushToChat, quindi incolla il seguente codice nello script:


    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)

    Lo script inizia ottenendo:

    • Il servizio Players in modo da poter fare riferimento a tutti i giocatori all'interno dell'esperienza.
    • Il servizio UserInputService in modo da poter controllare quando un giocatore preme i pulsanti sul proprio dispositivo.
    • L'oggetto AudioDeviceInput del giocatore locale, o il microfono fisico sul loro dispositivo.

    Lo script quindi:

    • Imposta il tasto V come il pulsante che il giocatore deve premere e tenere premuto per parlare nel proprio microfono.
    • Muta il microfono del giocatore.

    Il resto dello script imposta due listener di eventi per InputBegan e InputEnded da UserInputService. Quando premono il tasto V, l'evento InputBegan attiva l'audio del microfono del giocatore, e quando rilasciano il tasto V, l'evento InputEnded lo disattiva di nuovo.

  4. Fai un test dell'esperienza per verificare che i giocatori possano sentirsi solo tramite chat vocale quando premono il tasto V.

Aggiungi chat basata sul tempo

Chat basata sul tempo è una configurazione di chat vocale in cui i giocatori possono parlare e sentirsi solo durante un periodo di tempo stabilito. Integrare la chat basata sul tempo nel tuo gameplay è utile quando desideri che i giocatori pianifichino attentamente come comunicano tra loro durante fasi specifiche, come durante discussioni a turni o dopo scene cinematografiche.

Per ricreare la chat vocale basata sul tempo nel file di gioco campione Gingerbread Island - Chat Vocale:

  1. Nella finestra Esplora, inserisci un Script in ServerScriptService.

  2. Rinomina lo script in TimeBasedChat, quindi incolla il seguente codice nello script:


    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) -- ogni 15 secondi
    toggleMuteAll() -- consenti alle persone di parlare o impedisci loro di parlare
    end

    Questo script inizia ottenendo il servizio Players in modo da poter fare riferimento alla sua funzionalità per gestire tutti i giocatori nell'esperienza. Quindi imposta un flag muteAll su false, che la successiva funzione toggleMuteAll utilizza per attivare e disattivare la chat vocale.

    Esaminiamo la funzione toggleMuteAll:

    • Inizia eseguendo un ciclo attraverso tutti i giocatori nell'esperienza utilizzando Players.GetPlayers.
    • Per ciascun giocatore, verifica se ha un oggetto figlio AudioDeviceInput, o un microfono fisico sul loro dispositivo.
    • Se lo hanno, la funzione imposta la proprietà Muted dell'oggetto AudioDeviceInput sul valore di muteAll. Ad esempio, se muteAll è true, il microfono del giocatore è disabilitato, mentre se muteAll è false, il microfono del giocatore è abilitato.

    Lo script quindi entra in un ciclo infinito, aspettando 15 secondi per disattivare e riattivare tutti gli oggetti AudioDeviceInput.

  3. Fai un test dell'esperienza per verificare che i giocatori possano sentirsi solo tramite chat vocale a intervalli di 15 secondi.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.