Ge dina NPC:er i Unity en röst med ElevenAgents
- Skriven av
- Tadas Petra
- Publicerad
- Senast uppdaterad
LyssnaLyssna på den här artikeln
Spelare kan nu gå fram till en karaktär i ditt Unity-spel och prata med den högt. Det nya ElevenAgents Unity SDK kopplar en scen till en röstagent från ElevenLabs. Det lyssnar via spelarens mikrofon, spelar upp agentens röst genom en AudioSource och kör sessionen via Conversation API:t.
Samma kod körs i Editor, desktopversioner och WebGL, medan iOS, Android och XR är i beta.
Starta en konversation
En session behöver ID:t för en agent som du har skapat i ElevenLabs dashboard, där prompten och rösten finns. I vårt GettingStarted-exempel, som ingår i SDK:t, öppnar en trigger collider runt karaktären sessionen när spelaren går in och stänger den när spelaren går ut:
StartSessionAsync returnerar när anslutningen är öppen och ljudenheterna är redo, och väljer rätt transport för byggmålet. EndSession gör ingenting om sessionen redan har avslutats.
Vad ingår i SDK:t
Röster som kommer från karaktären
Som standard spelas agentens röst upp i 2D. Ange din egen AudioSource som OutputAudioSource, så kommer rösten från karaktären i stället.
GetOutputVolume() returnerar agentens aktuella nivå från 0 till 1 på alla plattformar. Exemplet använder den för att få kuben att guppa medan den pratar, och den kan på samma sätt styra en munanimation.
En agent, många karaktärer
Dynamiska variabler fyller platshållare som {{mood}} i agentens prompt och första meddelande, så att varje karaktär kan skicka sina egna värden när sessionen startar. Värden kan vara strängar, siffror eller booleska värden. I exemplet delar en glad gul kub och en arg röd kub på en agent:
För större ändringar ersätter Overrides delar av agentens konfiguration för en session, till exempel det första meddelandet eller rösten. Varje åsidosättning måste först aktiveras i agentens inställningar för Säkerhet.
Karaktärer som vet vad som händer
SendContextualUpdate berättar för agenten om spelhändelser mitt i en konversation, utan att avbryta den eller lägga till en tur som spelaren inte sa:
Karaktärer som agerar i spelet
Klientverktyg låter agenten utlösa spelkod. Definiera verktyget i agentens inställningar och registrera sedan en hanterare med samma namn:
SDK:t deserialiserar verktygets parametrar med Newtonsoft Json och skickar tillbaka det som hanteraren returnerar till agenten. Hanterare kan returnera en Awaitable för arbete som tar tid och kasta ett ClientToolException för att berätta för agenten varför något misslyckades.
Händelser och kontroller
Händelser som UserTranscriptReceived, AgentResponded, ModeChanged och Interrupted utlöses på Unitys huvudtråd, så att du kan uppdatera UI direkt från dem. Metoder omfattar textinmatning med SendUserMessage, avstängning av mikrofonen med SetMicMuted, SetVolume, frekvensdata för visualiseringar och byte av in- eller utdataenhet mitt i en session. I Unity SDK-dokumentationen finns hela listan.
Plattformssupport
SDK:t väljer transport för varje mål.
- iOS och Android: begär mikrofonbehörighet innan du startar en session.
- WebGL: aktivera Use WebAssembly.Table i Publishing Settings. SDK:t misslyckar bygget med instruktioner om det är avstängt. Play Mode fungerar inte medan WebGL är det aktiva byggmålet, så testa på ett desktopmål.
- WebGL-ljud: rösten spelas upp via Web Audio API, så vissa inställningar för
AudioSource, som mixerrouting och doppler, följer inte med. WebRTC-sessioner ignorerarOutputAudioSource.
Kompatibilitetsanteckningarna innehåller hela listan.
Kom igång
- Skapa en agent i ElevenLabs dashboard. För ett första test kan du stänga av Authentication i inställningarna för Security, så att spelet kan ansluta enbart med agent-ID:t.
- I Unity öppnar du Window > Package Manager > + > Install package from git URL och låser versionen:
https://github.com/elevenlabs/unity.git#v0.1.0 - Importera GettingStarted-exemplet, klistra in ditt agent-ID och tryck på Play.
Varning: Aktivera Authentication igen innan du släpper spelet. Din egen server begär då en kortlivad signerad URL, och spelet skickar den som SignedUrl i stället för AgentId. Lägg aldrig din ElevenLabs API-nyckel i en spelversion.
Genomgången för att komma igång tar cirka 10 minuter och avslutas med en kub som hälsar på dig när du går fram till den. Läs Unity SDK-dokumentationen för allt annat och skicka buggar och funktionsförfrågningar till GitHub issues.
Tadas är Developer Relations Engineer och hjälper utvecklare att bygga med ElevenLabs produktutbud. Tidigare grundade han en plattform för utvecklarutbildning, var Lead Developer Advocate på Agora, instruktör på Zero To Mastery och byggde upp en publik på YouTube genom att utbilda utvecklare.





