在Unity多人游戏中实现语音对话RTC实时音视频

我们在这里利用了Unity上流行的“Tanks!!!assetreference”坦克游戏作为多人在线游戏作为基础,相信很多人都不会陌生。大家可以在UnityAssetStore中搜到它。然后,我们会利用UnityAssetStore中的AgoraVoiceSDK为它增加多人语音聊天功能。

在开始前,你需要做以下准备:

我们默认大家都是用过Unity的开发者,但是为了照顾更多的人。我们还是要从头讲起。当然,开始的操作步骤很简单,所以我们会尽量以图片来说明。

首先,打开Unity后,让我们先创建一个新的项目。

如果你之前已经下载过Tanks!!!,那么我们点击页面旁边的“AddAssetPackage”按钮,选择添加它即可。

如果你还未下载过Tanks!!!那么可以在UnityStore中下载它。

在将Tanks!!!参考项目部署到手机之前,还有几步需要做。首先,我们需要在UnityDashboard中,为这个项目开启UnityLiveMode。该设置的路径是:project→Multiplayer→UnetConfig。尽管Tanks!!!只支持最多四个玩家4,但我们在将“MaxPlayerperroom”设置为6。

图:这个界面说明UnityLiveMode已经开启

现在我们已经准备好来创建iOS版本了。打开BuildSetting,将系统平台切换到iOS,然后Build。在切换系统平台后,请记得更新BundleIdentifier(如下图所示)。

图:创建了一个“Build”文件夹用于储存iOS项目

图:Build完成

让我们打开Unity-iPhone.xcodeproj,sign并让它在测试设备上运行。

现在我们已经完成了iOS项目的创建。接下来我们要创建Android项目了。

Android项目相比iOS来讲要更简单一些。因为Unity可以直接创建、sign和部署运行,无需借助AndroidStudio。我默认大家已经将Unity与AndroidSDK文件夹关联起来了。现在我们要打开BuildSetting,然后将系统平台切换到Android。

首先,我们要纠正一下Everyplay插件build.gradle文件中的语法错误。该文件的路径是:Plugins→Android→everyplay→build.gradle。

现在,我们打开了gradle文件,全选所有代码,然后将下方的代码替换上去。Tanks!!!团队在Github上更新了代码,但是不知道为什么并没能更新到插件中。

接下来,我们要利用Unity中的AgoravoiceSDKforUnity来给跨平台项目增加语音聊天功能了。我们打开UnityAssetStore,搜索AgoraVoiceSDKforUnity。

当插件页面完成加载后,点击“Download”开始下载。下载完成后,选择“Import”,将它集成到你的项目中。

我们需要创建一个脚本来让游戏与AgoraVoiceSDK进行交互。我们在项目中新建一个C#文件(AgoraInterface.cs),然后在VisualStudio中打开它。

在这个脚本中有两个很重要的变量:

在这里简单解释一下代码。首先,我们在开头有一些逻辑,用于check/requsetAndroidPermission。然后我们用AppID初始化AgoraRTCEngine,然后我们附加了一些事件回调,这部分很简单易懂。

mRtcEngine.OnJoinChannelSuccess表示用户已经成功加入指定频道。

最后一个重要功能就是update,当启用了AgoraRTCEngine时,我们想要调用引擎的.Pull()方法,它对于插件是否能运行起来很关键。

usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingagora_gaming_rtc;publicclassLeaveHandler:MonoBehaviour{//StartiscalledbeforethefirstframeupdatevoidOnEnable(){//Agora.ioImplimentationIRtcEnginemRtcEngine=IRtcEngine.GetEngine(AgoraInterfaceScript.appId);//GetareferencetotheEngineif(mRtcEngine!=null){Debug.Log("LeavingChannel");mRtcEngine.LeaveChannel();//leavethechannel}}}在这里,我们要找的游戏对象是LeftSubPanel(如下图,MainPanel→MenuUI→LeftSubPanel)。

Tanks!!!中有两种方法加入多人游戏,一种是创建新游戏,另一种是加入游戏。所以有两个地方,我们需要增加“加入频道”的命令。

让我们先找到UIScriptAsset文件夹(该文件夹路径:Assets→Scripts→UI),然后打开CreateGame.cs文件。在第61行,你会找到游戏用于匹配玩家的方法,在这里我们可以加入一些逻辑用于加入频道。首先我们要做的就是应用AgoraSDK库。

usingagora_gaming_rtc;在StartMatchmakingGame()的第78行,我们需要加入一些逻辑来获取正在运行中的AgoraRTCEngine,然后将“用户输入的内容”作为频道名称(m_MatchNameInput.text)。

privatevoidStartMatchmakingGame(){GameSettingssettings=GameSettings.s_Instance;settings.SetMapIndex(m_MapSelect.currentIndex);settings.SetModeIndex(m_ModeSelect.currentIndex);m_MenuUi.ShowConnectingModal(false);Debug.Log(GetGameName());m_NetManager.StartMatchmakingGame(GetGameName(),(success,matchInfo)=>{if(!success){m_MenuUi.ShowInfoPopup("Failedtocreategame.",null);}else{m_MenuUi.HideInfoPopup();m_MenuUi.ShowLobbyPanel();//Agora.ioImplimentationvarchannelName=m_MatchNameInput.text;//testing-->produse:m_MatchNameInput.textIRtcEnginemRtcEngine=IRtcEngine.GetEngine(AgoraInterfaceScript.appId);//GetareferencetotheEnginemRtcEngine.JoinChannel(channelName,"extra",0);//jointhechannelwithgivenmatchnameDebug.Log("joiningchannel:"+channelName);}});}StartMatchmakingGame()包含了加入频道

现在我们需要打开LobbyServerEntry.cs(Assets→Scripts→UI),然后加入一些逻辑,以实现让用户可以通过“FindaGame”来加入其他人的房间。

在VisualStudio打开LobbyServerEntry.cs,然后找到第63行,这里有一个JoinMatch()。我们在第80行增加几行代码。

privatevoidJoinMatch(NetworkIDnetworkId,StringmatchName){MainMenuUImenuUi=MainMenuUI.s_Instance;menuUi.ShowConnectingModal(true);m_NetManager.JoinMatchmakingGame(networkId,(success,matchInfo)=>{//Failureflowif(!success){menuUi.ShowInfoPopup("Failedtojoingame.",null);}//Successflowelse{menuUi.HideInfoPopup();menuUi.ShowInfoPopup("Enteringlobby...");m_NetManager.gameModeUpdated+=menuUi.ShowLobbyPanelForConnection;//Agora.ioImplimentationvarchannelName=matchName;//testing-->produse:matchNameIRtcEnginemRtcEngine=IRtcEngine.GetEngine(AgoraInterfaceScript.appId);//GetareferencetotheEnginemRtcEngine.JoinChannel(channelName,"extra",0);//jointhechannelwithgivenmatchname//testingstringjoinChannelMessage=string.Format("joiningchannel:{0}",channelName);Debug.Log(joinChannelMessage);}});}完成了!现在我们已经完成了AgoraSDK的集成,并且已经准备好进行iOS端和Android端的Build与测试。我们可以参照上述内容中的方法来进行Building与部署。

RTE开发者社区是聚焦实时互动领域的中立开发者社区。不止于纯粹的技术交流,我们相信开发者具备更加丰盈的个体价值。行业发展变革、开发者职涯发展、技术创业创新资源,我们将陪跑开发者,共享、共建、共成长。

THE END
1.MicrophoneUnityEditor Unity OtherMicrophoneclass in UnityEngine描述 使用该类可通过连接的麦克风来录制 AudioClip。可通过 devices 属性获取所连接麦克风的列表,然后使用 Start 和End 函数开始或结束(使用一个可用设备)录制会话。 静态变量 devices 可用麦克风设备(用名称标识)的列表。静态https://docs.unity3d.com/cn/2023.1/ScriptReference/Microphone.html
2.ChatMCP:基于MCP协议开发的AI聊天客户端,支持多语言和自动化ChatMCP 是基于模型上下文协议(MCP)的 AI 聊天客户端,支持与各种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互。它具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能,提供 MCP 服务器市场实现与不同数据源的聊天。 https://blog.51cto.com/u_15483555/12823980
3.UniVoice:Unity语音聊天解决方案UniVoice是一款为 Unity 游戏引擎设计的可扩展语音聊天/VoIP 解决方案。它旨在为开发者提供一个简单易用的工具,用于在游戏中实现多人语音聊天功能。无论是多人在线游戏、虚拟现实应用,还是社交平台,UniVoice 都能帮助开发者快速集成高质量的语音通信功能。 https://blog.csdn.net/gitblog_00621/article/details/142270561
4.Unity中的DialogueSystem插件介绍Dialogue System是一个旨在帮助 Unity 开发者快速添加自然、有机的对话到游戏中的插件。该插件提供了大量可定制化的对话选项,包括文本对话、语音对话、角色头像、背景音乐等。开发者可以使用 Dialogue System 创建出功能完善的对话系统,使游戏更加生动、丰富。 一、插件安https://www.506064.com/n/241120.html
5.Unity3D实现简单的语音聊天[iOS版本]游戏基现在很多手机游戏中的聊天系统都加入语音聊天的功能,相比于传统的文字聊天,语音聊天在MMORPG中显得尤为重要,毕竟直接口头交流总比你码字快得多了,也更直观些。 实现语音聊天的方法很多,U3D中有不少第三方的插件,提供了很多功能强大的语音功能,具体有哪些我就不一一举例了(其实我都没用过- -!),本文想从一个原生开https://www.cnblogs.com/CJane/p/6131247.html
6.mip网站建设/竞价广告三、Unity3D关键技术实现 1、2D文字聊天界面---NGUI插件 2、3D语音聊天界面---科大讯飞语音文本的转换 3、UNITY与Android进行交互 4、UNITY融合3D人物模型 5、UNITY与服务器端进行交互---TCP/IP协议 首先,从你进入软件开始,你就建立了和服务器的联系。这是一段和服务器的http://www.dwpp.cn/news/18325.html
7.Unity跨平台视频通话插件WebRtcVideoChatunity语音聊天,配合网络函数可实现简单的语音通话。降噪是自己封装的WebRtc的算法,项目中打包了windows和android库,附上源码有需要其他平台的可以自己打包。 上传者:hhpp526时间:2021-04-20 WebRTC Video Chat 0.9863 WebRTC Video Chat 是一款 Unity 插件,能够让你在两个程序之间流传输音频、视频以及发送文字和数据https://www.iteye.com/resource/xxilong-11704823
8.Unity语音聊天插件WordDetection移动开发Unity语音聊天插件 Word Detection点赞(0) 踩踩(0) 反馈 所需:1 积分 电信网络下载 dbnd-api-0.75.7.jar 2024-12-16 08:30:54 积分:1 Simple-Runtime-Window-Editor 2024-12-16 08:30:31 积分:1 CKRename 2024-12-16 08:30:24 积分:1 https://www.coder100.com/index/index/content/id/1716112
9.语音聊天室sdk腾讯云开发者社区javaSound的开源实现:http://www.tritonus.org/ 最近准备做个语音聊天室,困难很多。以后会在这里不断加入相关资源和开发进展。语音api原理一个游戏软件中使用的 语音? 现在已经可以capture到话筒的声音到wav文件了。? 正在准备把捕捉到的流直接播放。用多线程https://cloud.tencent.com/developer/information/%E8%AF%AD%E9%9F%B3%E8%81%8A%E5%A4%A9%E5%AE%A4sdk
10.实时语音聊天sdk腾讯云开发者社区实时语音聊天SDK是一种软件开发工具包,用于在应用程序中实现实时语音通信功能。它提供了一系列的接口和功能,使开发者能够轻松地集成语音聊天功能到自己的应用中。 实时语音聊天SDK的主要分类有两种:客户端SDK和服务器端SDK。 客户端SDK:客户端SDK适用于移动应用和桌面应用,可以在用户设备上实现实时语音聊天功能。它通常https://cloud.tencent.com.cn/developer/information/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%81%8A%E5%A4%A9sdk
11.GitHub基于webrtc的unity多人游戏实时语音(A Unity Demo for Impl Real-time Game Voice Among Mutiplayers Based On WEBRTC) 简介 MutiRTC_Unity unity工程,基于版本5.3.3f1。包含一个简单的多人实时语音聊天室场景。语音模块以平台sdk形式集成进unity,包括安卓和ios的语音sdk,详见plugins目录。 https://github.com/x00568/UnityRTC
12.Unity插件–实时语音插件DissonanceVoiceChat–CGaisUnity插件 10月14日 0 48 前往下载 文件大小:26.6 MB 版本:9.0.5 原始Unity 版本:2020.3.23或更高 Dissonance 使在游戏中添加实时语音聊天变得非常简单。 * 简单的拖放设置 – 无需编写脚本。 *适用于任何网络系统。 * 借助 Opus 编码器,实现极佳的音频品质、性能和压缩功能。 * 借助 Unity 音频合成器实现https://www.cgais.com/39855.html
13.Unity实战项目接入科大讯飞语音SDK在AndroidStudio在Android Studio该如何操作讯飞语音SDK 虽然最终效果是在Unity中接入语音识别SDK,但是在Android Studio(下面统称AS)这一步才是最重要的 相关的语音识别的代码和逻辑都是在AS写的,最终实现在Unity中的效果也不过是调用AS端的接口来实现的 所以说这一块接入也是可以在AS中打包成APK直接导出的! https://bbs.huaweicloud.com/blogs/296394
14.Vivox:游戏内语音聊天应用软件Unity有关Vivox语音聊天的常见问题解答 Vivox只能与 Unity 引擎一起使用吗?+ Vivox 可与哪些游戏平台一起使用?+ Vivox 要多少钱?+ 集成Vivox 需要多长时间?+ 如何开始使用Vivox?+ Vivox 是否支持辅助功能?+ 语言 English Deutsch 日本語 Fran?ais Português 中文 Espa?ol Русский ? 社交 http://unity.com/cn/products/vivox-voice-chat
15.2024年7月云服务行业动态及热点研究月报艾瑞咨询7月26日讯,在Unity全球开发者大会(Unite Shanghai 2024)上,声网联合Unity中国发布了UOS Hello产品,旨在为游戏开发者提供一站式、便捷、全球化、低延时、低功耗的游戏语音服务。UOS Hello支持游戏内多人语音服务和云录制,降低了中小型游戏工作室开发联机游戏的门槛。产品首个版本支持小队语音、开黑语音、国战指挥,并具https://www.shangyexinzhi.com/article/21409240.html
16.声网AgoraVoice手机版下载今天小编为各位小伙伴们推荐一款专业的语音聊天软件,在声网Agora Voice这款软件中你会见到各种不同的服务功能,让你可以在这里自由的进行聊天,开黑以及连麦唱歌等等,轻松的实现一对一以及多人聊天互动的场景,还有超多的优质服务在等待着用户的解锁! 《声网Agora Voice》软件亮点: 1.社交语音 支持1v1通话或群聊功能,通https://gps.it168.com/detail/114577.html
17.Unity内测SafeVoice服务,利用AI自动识别玩家不当聊天内容IT之家7 月 14 日消息,游戏引擎开发商 Unity 近日推出了一项新功能 Safe Voice,该技术旨在通过 AI 检测玩家在游戏聊天中类似“问候父母”的不当内容。 ▲ 图源 Unity 官网 据Unity 介绍,这项服务能分析玩家语音数据的语气、音量、音调、语调、情绪和交互背景,以帮助系统和玩家更快采取行动。 https://www.ithome.com/0/705/893.htm
18.声网联合Unity中国正式发布UOSHello为开发者提供一站式游戏语音近日, 备受瞩目的 Unity 全球开发者大会 (Unite Shanghai 2024) 在上海圆满落幕。 近日, 备受瞩目的 Unity 全球开发者大会 (Unite Shanghai 2024) 在上海圆满落幕。在游戏生态专场上, 声网联合 Unity 中国正式对外发布了 UOS Hello 产品, 该产品提供游戏内多人语音服务, 并支持云录制, 为开发者提供一站式、便https://www.geekpark.net/news/338858