unityunity3d 语音识别插件聊天插件都有什么,哪些比较好用

4969人阅读
UNITY3D(40)
UNITY3D UNITY3D 5.x(34)
简介选择besthttp pro 1.7.8 版本 支持64位IL2CPP处理;http://download.csdn.net/detail/kaitiren/9120539&Unity用来和服务器通信可以用原生的WWW,但是WWW所提供的功能并不多,不能满足很多需求。因此我们可以自己封装Http协议来满足更多的需要。在Unity游戏里使用Http协议的情况很常见,因为它操作简单,便于实现,经常用在登陆等场景下,还例如下载上传一些资源。如果想要实现进一步的控制,就要使用Socket并定义自己的协议了。使用这个插件还有一个重点就在跨平台,因为用C#自己的HttpWebRequest也能实现。下面简要介绍一下HTTP和Socket:Http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;慢,不太适合游戏中实时数据的传输。数据量。由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。&Socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息~~具体心跳消息格式是开发者自己定义的。关于Socket连接与HTTP连接的区别,请参考BestHttp是基于RFC&2616的Http/1.1实现,支持几乎所有Unity支持的移动和主机平台,具体请见官方文档。以下介绍主要来自于官方文档,会有一些补充信息。BestHttp的目标是成为一款充分发挥Http/1.1潜力的,易用并且强大的Unity插件。安装:需要将BestHttp目录下的Plugins目录移动到Assets目录下,实际上脚本BestHTTPInstaller.cs会在导入完成后自动的完成这个过程,这里用到了[InitializeOnLoad]这个特性,我们稍后再说。需要注意的一点是Unity低于3.5版本的话,需要删除Plugins目录下的WP8目录。接下来开始一些基础的介绍:首先添加Using&BestH&的声明&Get&Requests最简单的向服务器发出请求的办法是创建一个HttpRequest对象,提供url和一个回调函数给构造函数。在创建了一个新的HttpRequest对象之后,我们只需要调用Send()函数就可以发送请求了。下面看一个例子:1 HTTPRequest request = new HTTPRequest(new Uri(“https://”), onRequestFinished);
2 request.Send();
3 void OnRequestFinished(HTTPRequest request, HTTPResponse response)
5   Debug.Log(“Request Finished! Text received: ” + response.DataAsText);
6 }回调函数会收到两个参数,一个是原始的HTTPRequest&对象,另一个是承载服务器响应的HTTPResponse&对象。如果出错的话,HTTPResponse&对象会是空,并且带有一个Exception属性来显示可能的错误。请求是分别在不同的线程中处理的,而调用回调函数是在Unity的主线程中,所以我们不必去做任何的线程同步。在这个例子里我们都不需要任何临时变量,new HTTPRequest(new Uri(“https://”), (request, response) =&Debug.Log(“Finished!”)).Send();&POST&Requests上面的例子是一些简单的Get请求,如果我们不指定方法,所有的的请求都会默认是Get请求。构造函数含有一个可以指定请求方法的参数:1 HTTPRequest request = new HTTPRequest(new Uri(“/posturi”),
2 HTTPMethods.Post,
3 OnRequestFinished);
4 request.AddField(“FieldName”, “Field Value”);
5 request.Send();想要Post任何数据而不想设置域的话,你可以使用RawData属性。1 HTTPRequest request = new HTTPRequest(new Uri(“/posturi”),HTTPMethods.Post,OnRequestFinished);
4 request.RawData = Encoding.UTF8.GetBytes(&Field Value&);
5 request.Send();除了GET和POST方法,其他方法也可以同样的使用。如何获取下载的数据通常我们都会通过请求来获取服务器的一些数据,原始的字节数据可以通过HTTPResponse&对象的Data属性获得,我们来看一个下载图片的例子:1 new HTTPRequest(new Uri(“http:///path/to/image.png”), (request, response) =&
3   var tex = new Texture2D(0, 0);
4   tex.LoadImage(response.Data);
5   guiTexture.texture =
6 }).Send();当然还有更紧凑的办法:new HTTPRequest(new Uri(“http:///path/to/image.png”), (request, response) =&
guiTexture.texture = response.DataAsTexture2D).Send();除了DataAsTexture2D&还有一个DataAsText&属性用来将响应解析成UTF8的字符串。注意:本文中的所有例子都没有进行错误检查,请在生产环境中自己添加判空。你也可以借助StartCoroutine&来yield&HTTPRequest&,1 HTTPRequest request = new HTTPRequest(new Uri(“http://”));
2 request.Send();
3 yield return StartCoroutine(request);
4 Debug.Log(“Request finished! Downloaded Data:” + request.Response.DataAsText);Debug.Log只会在请求完成后被调用。高阶话题:下面将会讨论BestHttp的一些高阶用法我们可以很容易的通过HTTPRequest&的构造函数开启或关闭一些特性。下面是这些参数:●&methodType:&决定给服务器发出什么请求。默认的methodType是HTTPMethods.Get.●&isKeepAlive:告诉服务器我们想&tcp&连接保持开启,&这样连续的Htttp请求就不必再次打开连接。&如果我们保持默认开启,会省下不少时间。&如果我们确信不会那么频繁的请求,那么可以设为false。&默认值是true.关于KeepAlive的一些信息:所以别指望这能代替socket的长连接。●&disableCache:&告诉BestHttp系统用或者不用整个缓存机制。如果这个值是true,那么系统不会去缓存里查找已存储的响应,而且响应也不会被缓存。&默认值是&false.验证系统BestHTTP&通过HTTPRequest的认证属性支持基础和摘要认证: 1 using BestHTTP.A
2 var request = new HTTPRequest(new Uri(&https://httpbin.org/digest-auth/auth-int/usr/paswd&), (req, resp)
5   if (resp.StatusCode != 401)
6     Debug.Log(&Authenticated&);
7   else
8     Debug.Log(&NOT Authenticated&);
9   Debug.Log(resp.DataAsText);
11 request.Credentials = new Credentials(&usr&, &paswd&);
12 request.Send();&关于验证,可以参考:流媒体我们为HTTPRequest的构造函数提供的回调函数默认只会在服务器响应完全下载完成处理后被调用一次。如果采取这样的方式的话,在手机设备上下载大文件我们会很快用光内存,应用也就会崩溃。为了避免,BestHTTP&被设计成可以很容易的处理这类问题:只用把一个标志设为true,我们的回调函数会在每一次预定量的数据下载完成后被调用。另外如果我们没关闭缓存,下载的响应会被缓存,这样我们就可以从本地缓存获取整个响应,并且不用该我们的代码也不用碰服务器。(PS:服务器必须发送正确的头:headers&(“Expires”header:) 1 var request = new HTTPRequest(new Uri(&/bigfile&), (req, resp) =&
3   List&byte[]& fragments = resp.GetStreamedFragments();
4   // Write out the downloaded data to a file:
5   using (FileStream fs = new FileStream(&pathToSave&, FileMode.Append))
6   foreach(byte[] data in fragments)
7     fs.Write(data, 0, data.Length);
8   if (resp.IsStreamingFinished)
9     Debug.Log(“Download finished!”);
11 request.UseStreaming = true;
12 request.StreamFragmentSize = 1 * 1024 * 1024; // 1 megabyte
13 request.DisableCache = true; // already saving to a file, so turn off caching
14 request.Send();&下面简要描述一下我们在上面所做的操作1.我们切换了标志位-UseStreaming为true,所以我们的回调函数可以被反复调用。2.StreamFragmentSize标示了我们在调用回调函数之前希望缓存的最大数据量。3.每当StreamFragmentSize&大小的数据块下载后我们的回调函数就会被调用,并且在IsStreamingFinished&设为true之后还会再调用一次。4.获得下载的数据需要调用GetStreamedFragments()函数,我们应该将它的结果保存在临时变量里,因为内部缓存会在这次调用结束后被清空,所以后续的调用会返回空。5.我们在这个例子里关闭了缓存,因为我们已经保存了下载的文件,并且我们不希望占据太多的空间。缓存缓存也是基于HTTP/1.1&RFC的。它用头信息来存储和验证响应。缓存机制在后台工作,我们只需要决定是否启用。如果缓存的响应有一个带有未来时间的’Expires‘头,BestHTTP&会用缓存的响应而且不会向服务器验证。这意味着我们不需要初始化任何tcp连接。这能让我们节省时间、带宽,并且可以离线使用。虽然缓存是自动的,我们还是能够控制一些,或者说我们可以获得一些信息,通过使用HTTPCacheService&类的一些公共函数:●&BeginClear():&它会在另外一个线程清除所有的缓存。●&BeginMaintainence():&通过这个函数,我们可以根据最近的访问时间删除缓存的条目。它会删除最后访问时间比指定时间早的缓存条目。&我们也可以用这个函数保持缓存大小://&删除在最近两周没被访问的缓存,&然后删除条目以保持缓存大小在50M以下,&从最早的开始.HTTPCacheService.BeginMaintainence(new&HTTPCacheMaintananceParams(TimeSpan.FromDays(14),50&*&1024&*&1024));●&GetCacheSize():&返回缓存大小,字节表示●&GetCacheEntryCount():&返回存储在缓存里的条目数.&平均的缓存条目大小可以被这样计算float&avgSize&=&GetCacheSize()&/&(float)GetCacheEntryCount()&.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:871820次
积分:9885
积分:9885
排名:第1389名
原创:152篇
转载:101篇
译文:31篇
评论:124条
文章:20篇
阅读:69315
(2)(6)(1)(1)(2)(4)(3)(2)(2)(1)(1)(6)(8)(1)(4)(3)(8)(3)(2)(4)(3)(5)(11)(10)(8)(20)(11)(15)(26)(9)(5)(9)(8)(4)(8)(6)(3)(10)(7)(3)(6)(2)(7)(19)(1)(3)&&&&Unity十大插件和几个比较好用的插件
&Unity十大插件和几个比较好用的插件
十大Unity3D插件资源,你还在等什么;
我分享的是我云盘的下载,如果下载不了的可以给我留言
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
Unity十大插件和几个比较好用的插件
所需积分:10
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
Unity十大插件和几个比较好用的插件
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员主题 : Playmaker 这个插件有什么好的看法
级别: 新手上路
可可豆: 400 CB
威望: 400 点
在线时间: 97(时)
发自: Web Page
来源于&&分类
Playmaker 这个插件有什么好的看法&&&
个人感觉这款插件iTween上多加了一些东西 做出来得效果和动画 也没有EZGUI体现的好& 如果单纯的用iTween做AI路径 是否也太耗资源了
级别: 骑士
可可豆: 1539 CB
威望: 1539 点
在线时间: 120(时)
发自: Web Page
我是纯粹来顶lz的~~~~
欢迎真心喜欢技术的人加我qq,方便交流,其他的就不必了。。。
级别: 骑士
可可豆: 1539 CB
威望: 1539 点
在线时间: 120(时)
发自: Web Page
木有用过Playmaker的飘过。。但iTween确实蛮大的,耗资源。。。盖楼盖楼~~~~~
欢迎真心喜欢技术的人加我qq,方便交流,其他的就不必了。。。
级别: 新手上路
可可豆: 400 CB
威望: 400 点
在线时间: 97(时)
发自: Web Page
回 2楼(珊珊是只猫) 的帖子
喵&&&&&&&&&& ..............&&&&&&&&&&&&&&&&&&&&
级别: 骑士
可可豆: 1539 CB
威望: 1539 点
在线时间: 120(时)
发自: Web Page
回 3楼(sunmengfei) 的帖子
喵喵喵~~~~~
欢迎真心喜欢技术的人加我qq,方便交流,其他的就不必了。。。
发帖: 7688
可可豆: 73313 CB
威望: 73439 点
在线时间: 5514(时)
发自: Web Page
我买了,一直没用呢
In all thy ways acknowledge Him, and He shall direct thy paths.
级别: 新手上路
可可豆: 283 CB
威望: 283 点
在线时间: 6(时)
发自: Web Page
有用过,结合自带动画系统,3D游戏中可以尝试使用
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版求个MMO语音聊天的插件。
USpeak 试了下噪音好大,不知道有没有降噪的方法。
或者其他插件。
要评论请先&或者&
自己接个sdk
要不要一块买一下他最新出的DFVoice?

我要回帖

更多关于 unity 语音聊天插件 的文章

 

随机推荐