ElevenAgents Unity SDK 推出:NPC 語音對話、遊戲動作與平台支援怎麼接?
ElevenAgents Unity SDK 讓 NPC 聆聽玩家、回應場景事件並執行遊戲工具。看懂角色聲音、動態設定、桌面與 WebGL 差別、行動平台測試狀態,以及正式發行的認證分工。
ElevenAgents Unity SDK 連起玩家說話與遊戲互動。角色還需要知道場景裡剛發生什麼,才能把對話接回遊戲。一個只會講話、無法回應拿到鑰匙的角色,很難完成互動。
ElevenLabs的新Unity SDK把這些環節接在一起。玩家可以用麥克風說話,角色回應可以從遊戲裡的聲音來源播放,也能呼叫開發者提供的動作。
SDK就是讓遊戲接上外部服務的開發套件。官方文章11月5日發布、6日更新,並在6日展示玩家走近角色後開始交談的示範。
對話內容仍由雲端代理處理,遊戲則提供場景資訊與可執行的工具。這個分工決定角色能知道什麼,也決定它能改變哪些遊戲狀態。
我會先用這套工具做一個有清楚用途的角色,例如回答問題後協助打開入口。桌面、瀏覽器與行動平台的支援不同,作品目標平台應先選定。
把一次對話拆成聆聽、回應與動作,就能理解這套連接提供了什麼。
ElevenAgents Unity SDK 把哪些環節接起來?
ElevenAgents Unity SDK 把玩家說話、角色回應與遊戲程式放進同一段對話。依官方發布文章,套件使用玩家麥克風收音,讓雲端語音代理回應,再把聲音送回遊戲。
這個鏈條中,Unity 負責場景與互動,ElevenLabs 代理負責對話。開發者先在 ElevenLabs 後台建立代理,決定提示指令與聲音,遊戲再用這個代理的識別碼開啟對話。
走近角色時開始,離開時結束
官方 GettingStarted 範例在角色周圍放一個觸發範圍。玩家進入時開始通話,離開時結束,讓對話生命週期和場景互動接在一起,而不必讓玩家另外尋找聊天視窗。
連線透過 Conversation API 管理。這是套件提供的對話程式介面,用來開啟工作階段、等待音訊裝置與連線就緒,以及在互動結束後關閉通話。
因此,一次角色互動有明確起點和終點。對玩家而言是走到角色身邊說話,對程式而言則是建立一段有設定、有輸入輸出的連線,兩者由場景事件連起來。
當同一段程式用於不同目標平台時,套件會選擇相應傳輸方式。開發者可以沿用共同的對話介面,平台差異則需要在聲音和執行條件上另外理解。
語音鏈接通以後,角色聽起來是否在場,還要看聲音怎麼播放。

The ElevenAgents Unity SDK is now available.
— ElevenLabs Developers (@ElevenLabsDevs) November 6, 2026
Players can walk up to a character in your Unity game and talk to it out loud. It can respond with any voice in our library and take actions using client tools. pic.twitter.com/lYz09IPH4h
角色聲音、個性與場景事件怎麼傳?
同一個代理可以接收不同角色的設定,場景也能在對話中補充事件。這讓角色差異不必全部寫成不同程式,遊戲可以在每次開始互動時,送進當下需要的資訊。
聲音位置與角色表演各有分工
預設回應使用平面的二維聲音。開發者可以提供自己的 AudioSource,也就是 Unity 裡的聲音來源元件,讓回應從角色的位置播放,配合場景中的距離與方位。
套件還能回傳介於 0 與 1 的即時輸出音量。官方範例用這個值讓方塊跟著說話上下擺動,也可以拿來帶動嘴部動畫,但實際動畫仍由遊戲端製作。
相容性文件還提醒,WebGL 雖然聽得到代理說話,直接從 Unity 聲音來源讀取原始取樣,仍可能取得靜音資料。原因是聲音實際走瀏覽器音訊路徑,沒有經過同一套 Unity 取樣流程。
如果作品要用聲音帶動畫面,就應使用套件提供的跨平台音量與頻率資料。否則桌面測試能動的音量表,搬到瀏覽器後可能沒有反應,讓人誤以為代理根本沒有回話。
這個數值描述聲音強弱,不能直接當成自動嘴型同步。若作品需要精確的嘴部表演,仍要另外安排如何把音訊或其他訊號轉成角色動畫。
同一代理可以帶入不同角色設定
DynamicVariables 是每段對話開始時送進去的動態設定值,用來填入代理指令或開場白的預留位置。官方用一個黃色、心情愉快的方塊,以及一個紅色、生氣的方塊示範。
兩個方塊可以共用同一代理,分別傳入自己的顏色與心情。這樣能共用基本對話設定,又保留角色當下的差別。可傳入的值包含文字、數字和真假值。
若需要更大幅度改變一次對話,例如換開場白或聲音,可以使用工作階段覆寫設定。不過對應覆寫項目要先在代理的 Security 設定開啟,遊戲端才能套用。
場景進行中,SendContextualUpdate 則能補充遊戲事件。例如玩家已拿到地窖鑰匙,程式可把這個消息送給代理,不必假裝玩家自己說出那句話,也不會因此多出一回合玩家發言。
角色知道發生什麼之後,要改變遊戲仍需要明確的程式工具。
對話如何開門、接任務或回報失敗?
角色能執行的動作來自遊戲端提供的工具函式。對話模型可以決定何時要求使用工具,實際改變場景的程式仍由開發者定義。
官方以開門為例,在代理設定裡建立工具,再於遊戲端用相同名稱註冊處理函式。代理傳來門的識別資料,程式找到對應的門、執行動作,最後把結果回傳。
工具名稱和結果必須能互相對上
代理設定裡的工具名稱,和遊戲端註冊名稱一致,才有辦法把請求交給正確程式。這個接口把自然語言需求轉成有明確輸入的動作,避免一句模糊描述直接改變任何遊戲狀態。
處理函式的回傳內容會送回代理,因此它可以根據執行結果繼續對話。如果動作需要等待,函式也能非同步完成,讓程式等到工作真正結束再交回結果。
執行失敗時,可以用 ClientToolException 回報原因。這讓代理有機會知道工具沒有完成,而不必把「已經要求開門」誤當成「門已經打開」。
例如門在遊戲規則裡仍然上鎖,角色接下來應如何回應,就可以沿著工具回傳的結果處理。對話和遊戲事件有來有回,才較容易保持同一個互動脈絡。
文字與狀態事件可以接回介面
套件提供玩家逐字稿、代理回應、模式變更與被打斷等事件,並在 Unity 主執行緒上觸發。這讓遊戲可以直接更新字幕或介面,不必把顯示工作和對話狀態分成兩份猜測。
此外,還有送入文字、麥克風靜音、調整音量,以及在工作階段中更換音訊輸入或輸出裝置的控制。這些能力讓語音互動能配合玩家當下的操作環境。
工具完成互動,平台支援則決定這段體驗在哪裡能正常播放。
桌面、WebGL 與行動版有哪些差別?
桌面與瀏覽器已有支援,行動與 XR 則仍處於早期階段。官方文章將 iOS、Android 與 XR 標為 Beta,儲存庫的相容性文件則提醒這些目標尚未完整測試。
官方儲存庫列出的目標版本是 Unity 6.3 LTS,也就是 6000.3.0f1 以上。這是套件的執行前提,不能只因為原專案使用 Unity,就假設所有舊版本都相容。
桌面和瀏覽器使用不同音訊路徑
編輯器與 macOS、Windows、Linux 桌面版本使用 WebSocket。瀏覽器 WebGL 可以使用 WebSocket 或 WebRTC,兩者都是即時傳輸資料的方式,但套件能承接的聲音設定不同。
WebGL 的聲音經過瀏覽器的 Web Audio 處理。相容性文件說明,套件會把部分聲音來源設定映射過去,但混音群組、都卜勒效果與部分 Unity 音訊功能不會完整沿用。
若 WebGL 選用 WebRTC,套件目前會忽略 OutputAudioSource,改走相應音訊流程。因此,同一個角色在桌面有空間聲音,不能直接推定瀏覽器的所有連線模式都會呈現相同效果。
瀏覽器測試需要額外設定
WebGL 必須開啟 Use WebAssembly.Table,讓瀏覽器與 Unity 程式之間的回呼正常運作。套件會在缺少設定時阻止建置,並提供指示,避免把問題留到玩家執行時才出現。
相容性文件也要求 WebGL 的程式介面相容層級使用 .NET Standard 2.1 或以上。專案若曾經手動降到較舊層級,可能在瀏覽器第一次傳回資料時才發生問題,因此舊專案的設定需要一起對上。
當編輯器的目標平台選為 WebGL,官方目前不支援直接使用 Play Mode。開發時需要切換到桌面目標進行編輯器內測試,再分別檢查實際瀏覽器版本。
行動平台還有麥克風授權問題。iOS 與 Android 必須在開始對話前取得錄音權限,套件不會替作品自動完成整個權限請求流程。
平台選定以後,發布版本還要處理連線資格與使用成本。
延伸閱讀:Unity 官方 AI 外掛進入 Grok Build:遊戲開發代理有了文件與操作指引
測試與正式發行的認證怎麼分?
示範可以快速連上代理,對外發行則要把服務憑證留在伺服器。官方入門文章先以簡單測試說明連線,也明確交代正式發行需要重新啟用認證。
開發端可以從 Package Manager 安裝套件,文章以 v0.1.0 為固定版本範例。匯入 GettingStarted、填入代理識別碼後,就能用方塊角色查看基本對話流程。
官方儲存庫另外提供 QuickStart 範例,用一個遊戲物件與簡單程式顯示逐字稿。若只是先確認對話程式接口,這個起點較小。想看走近交談、角色差異與空間聲音,再使用 GettingStarted。
兩個範例分別回應不同開發階段。一個先確認連線與文字事件,另一個把連線放回場景,讓團隊理解哪些部分已由套件提供、哪些仍要融入自己的遊戲規則。
API 金鑰不應放進玩家拿到的檔案
正式發行時,官方要求由自己的伺服器取得短效 Signed URL,再交給遊戲建立對話。這個網址承擔一段有限時間的連線資格,玩家端不用直接保存 ElevenLabs API 金鑰。
API 金鑰是呼叫服務的憑證,若直接放進遊戲建置,會隨著檔案交到玩家手上。因此,開發者需要把取得連線資格的工作留在自己可管理的伺服器。
套件採 MIT 程式碼授權,這和雲端代理服務的用量是不同層次。程式可以取得與整合,不代表生成聲音、持續對話或部署後的使用都沒有成本。
這份發布文章沒有提供一張涵蓋所有遊戲情境的費率表。角色數量、同時使用情況與對話安排會影響需求,應依自己的 ElevenLabs 服務方案確認,而不從套件開放下載推定免費無限通話。
認證與用量有了邊界,才適合把互動擴到更多角色。
ElevenAgents Unity SDK 常見問題
它會自動替角色製作嘴型嗎?
套件能回傳聲音強度,官方用來驅動方塊擺動,也說明可以用於嘴部動畫。完整的角色動畫與嘴型設計仍由遊戲端負責。
同一個代理可以給不同角色使用嗎?
可以透過動態設定,替每段對話帶入角色自己的資料。若要改聲音或其他覆寫項目,則需先在代理設定允許對應能力。
手機與 XR 已和桌面一樣成熟嗎?
官文將它們標為 Beta,相容性文件另列為尚未完整測試。應依這個範圍理解,不能把桌面與 WebGL 的支援直接外推到全部平台。
先讓一個角色完成一段有結果的對話
遊戲團隊適合先挑一位角色與一個具體動作,例如聽懂玩家的請求後,依遊戲規則協助打開入口。這樣可以把聲音、場景資訊與工具結果連成一個完整互動。
我會先在作品目標平台走完這段流程,再決定要加入多少角色。讓角色取得場景資訊、回答玩家並執行動作,才能看出這條連接對遊戲體驗的幫助。
延伸閱讀:遊戲開發進入 Agent 時代!OpenAI 與 Unity 官方聯手:Codex 正式推出 Unity 官方插件,31 大原生引擎 Skills、MCP 即時除錯與全新工作流深度解析