求问一个unityunity3d小游戏教程

观察 | 用Unity制作一个Siri问答软件
原文链接:/article/detail/34549
大家好,我是云图。之前项目有个需求要做一个简单的siri类似的问答系统,经过一番周折,终于还是实现出来了,软件不单可以在pc上面运行,也可以打包到安卓,ios平台,真正实现一键跨平台打包。
现在我们先说一些实现的思路,所谓问答系统,第一步就是用户首先说一句话,然后我们的软件把听到的话转换成文字。那现在问题有了,
第二步我们就需要一个地方,把我们的问题文字转化成我们软件回答的答案内容。
第三步就是把要回答的文字读出来。
思路有了,开始动手,首先,我们把用户输入的语音,要转成文字,经过我几个挑选,我发现百度语音和讯飞语音都不错,只不过讯飞语音的接入麻烦了点,
所以就采用了百度的语音识别
//access_token
privatestringcuid="随便写的d";//用户标识
privatestringformat="pcm";//语音格式
privateintrate=8000;//采样率
privateintchannel=1;//声道数
//语音数据,进行base64编码
//原始语音长度
privatestringlan="zh";//语种
privatestringgrant_Type="client_credentials";
privatestringclient_ID="9152186";//百度appkey
privatestringclient_Secret="14c703ce0f900eae40e95b2cdd564472";//百度SecretKey
privatestringbaiduAPI="/server_api";
privatestringgetTokenAPIPath=
"/oauth/2.0/token?grant_type=client_credentials&client_id=ekGb1G5XHY4BIVSA8nLzX5cA&client_secret=14c703ce0f900eae40e95b2cdd564472";
privateByte[]clipB
///&summary&
///转换出来的TEXT
///&/summary&
publicstaticstringaudioToS
privateAudioS
privateintaudioL//录音的长度
publicvoidStartRecord()
Debug.Log("开始说话");
if(Microphone.devices.Length==0)
Microphone.End(null);
aud.clip=Microphone.Start(null,false,10,rate);
Debug.Log("结束说话");
intlastPos=Microphone.GetPosition(null);
if(Microphone.IsRecording(null))
audioLength=lastPos///录音时长
audioLength=10;
Microphone.End(null);
clipByte=GetClipData();
len=clipByte.L
speech=Convert.ToBase64String(clipByte);
StartCoroutine(GetToken(getTokenAPIPath));
StartCoroutine(GetAudioString(baiduAPI));
///&summary&
///把录音转换为Byte[]
///&/summary&
///&returns&&/returns&
publicByte[]GetClipData()
if(aud.clip==null)
Debug.LogError("录音数据为空");
float[]samples=newfloat[aud.clip.samples];
aud.clip.GetData(samples,0);
Byte[]outData=newbyte[samples.Length*2];
intrescaleFactor=32767;//toconvertfloattoInt16
for(inti=0;i&samples.Li)
shorttemshort=(short)(samples[i]*rescaleFactor);
Byte[]temdata=System.BitConverter.GetBytes(temshort);
outData[i*2]=temdata[0];
outData[i*21]=temdata[1];
if(outData==null||outData.Length&=0)
Debug.LogError("录音数据为空");
returnoutD
///&summary&
///获取百度用户令牌
///&/summary&
///&paramname="url"&获取的url&/param&
///&returns&&/returns&
privateIEnumeratorGetToken(stringurl)
WWWgetTW=newWWW(url);
yieldreturngetTW;
if(getTW.isDone)
if(getTW.error==null)
token=getTW.
StartCoroutine(GetAudioString(baiduAPI));
Debug.LogError("获取令牌出错"getTW.error);
Debug.LogError("下载出错"getTW.error);
///&summary&
///把语音转换为文字
///&/summary&
///&paramname="url"&&/param&
///&returns&&/returns&
privateIEnumeratorGetAudioString(stringurl)
JsonWriterjw=newJsonWriter();
jw.WriteObjectStart();
jw.WritePropertyName("format");
jw.Write(format);
jw.WritePropertyName("rate");
jw.Write(rate);
jw.WritePropertyName("channel");
jw.Write(channel);
jw.WritePropertyName("token");
jw.Write(token);
jw.WritePropertyName("cuid");
jw.Write(cuid);
jw.WritePropertyName("len");
jw.Write(len);
jw.WritePropertyName("speech");
jw.Write(speech);
jw.WriteObjectEnd();
WWWgetASW=newWWW(url,Encoding.Default.GetBytes(jw.ToString()));
yieldreturngetASW;
if(getASW.isDone)
if(getASW.error==null)
JsonDatagetASWJson=JsonMapper.ToObject(getASW.text);
if(getASWJson["err_msg"].ToString()=="success.")
audioToString=getASWJson["result"][0].ToString();
if(audioToString.Substring(audioToString.Length-1)==",")
audioToString=audioToString.Substring(0,audioToString.Length-1);
Debug.Log("说话的问题是:"audioToString);
GetAnswer(audioToString);
Debug.LogWarning("没有成功:"getASWJson["err_msg"].ToString());
Debug.LogError(getASW.error);
首先你要去百度语音官网申请一个开发者权限,这些细节在这里就不讨论了,很简单。重要的就是两个参数client_ID和client_Secret的内容,填写到获取token的网页中发上去,获取到token后百度就知道我们是哪个用户哪个软件在调用语音识别了。这里在ios运行的时候有时候会显示获取不到token,原因是苹果不给我们这样发信息获取内容,说不安全,需要用其他办法。其他办法有很多,最笨的方法就是提前获取到token,然后写死在程序,坏处就是一个月会变一次,比较麻烦。好了,现在我们的语音已经传上百度然后转成文字下来,下一步我采用的是图灵的文字问答系统。图灵这个做的也是非常好用的,直接把我们的问题文字写到url里面打开链接,就可以返回答案了。
privatestringurl="/openapi/api?key=d91b25b8866fef13f82cd28c0d523c8a&info=";
privatestringQuestionUrl="/openapi/api?key=d91b25b8866fef13f82cd28c0d523c8a&info=";
publicstringmsg="";
///&summary&
///获取图灵返回的答案
///&/summary&
///&paramname="msg"&提问的问题&/param&
publicvoidGetAnswer(stringmsg)
StartCoroutine(GetTuLingtoken(urlmsg));
privatestringTuLingtoken="";
///&summary&
//图灵的问答系统
///&/summary&
///&paramname="Question"&要问的问题&/param&
///&returns&&/returns&
privateIEnumeratorGetTuLingtoken(stringurl)
WWWgetTW=newWWW(url);
yieldreturngetTW;
if(getTW.isDone)
if(getTW.error==null)
TuLingtoken=getTW.
TuLingtoken=JsonMapper.ToObject(getTW.text)["text"].ToString();
PlayAudio(TuLingtoken);
Debug.LogError(getTW.error);
到这里我们就获取到我们要回答用户答案的音频了,回答的答案特别骚气。
我相信到这一步很多做类似项目的也有不少人做到了,可就是这里没办法做下去了,为什么呢,
因为要用unity把网络的音频下载下来播放是非常麻烦的事情,我至今都没找到办法,就算用c#的办法解决了,可是安卓和ios呢,根本调用不了,再者就是就算你下载下来了,unity好像没有提供外部播放音频的功能,我不知道是我能力不足还是unity的问题,感觉很基本的事情居然没有解决方案。自我怀疑中。。。。
你可能要问了,那么有没有一种办法能解决这个多平台播放音频的问题呢?当然有了,我用了FMOD这个插件,可以直接播放网页的在线音频,
用了一个插件集成进来,最后一步就把网页音频地址传进去,就解决了播放的问题,而且是跨平台的,ios,安卓,pc都能用。
//要播放的语音文字
publicstringAudioMsg="";
privatestringurlForward=@"/text2audio?tex=";
publicstringAudioUrl="";
publicAudioStreamDemoasD
publicvoidPlayAudio(stringcontent)
Debug.Log(content);
AudioUrl=@"/text2audio?tex="content"&lan=zh&cuid=随便写的&ctp=1&tok="//
string[]arrPunc={",","。","”",";","“",""};
for(inti=0;i&arrPunc.Li)
//用空白字符来替换指定的标点符号,也就相当于删除掉了标点符号
AudioUrl=AudioUrl.Replace(arrPunc[i],"");
asDemo.SetUrlContext(AudioUrl);
asDemo.OnPlay();
就这么点代码,当初找不到方案的时候头疼了2个星期。好在在不放弃的坚持下还是搞定了,中间走了不少弯路,好在有MemoryC大神的帮助下,也一个个解决了,为MemoryC大神打call我把这三步骤已经缩减到一个类里面,方便大家查阅,提一下目前这个功能的一点短处,就是说完话以后要尽快点结束,让语音不浪费那么多空间,增快识别速度,最快的时候可以在2秒内读出答案,网速好的话比较好。我测试在安卓读的最快,然后是pc,最慢是ios,测试的机器是iphone5,不知道和这个有没有关系。再说点这个东西的拓展,比如一些项目有一些运行了windows系统的机器人,展厅的一些全息投影之类的项目,都可以接入这个功能,让项目更有可玩性。
声明: 本文采用 协议进行授权 转载请注明来源: /181
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点登录后你可以:
首次使用?
QQ群6012600 新浪微博:塑梦VRAR Twitter: @wsfflyn
视频地址复制
Flash地址复制
Html地址复制
离线看更方便
用或其他应用扫描二维码
注:这个人脑子有病,在B站传教学视频。
在这个教程里,我将教大家在一个小时之内制作一个Unity3d 小游戏,暂命名:滚个球儿。
制作前要求:下载Unity3D和入门级的变成基础。
本视频由个人制作,但其核心来源于Unity3D官方教程: /learn/tutorials/projects/roll-ball-tutorial
百度盘源代码:链接:/s/1pLlvbD5 密码:gwb9
广播电视节目制作经营许可证:(沪)字第1248号
| 网络文化经营许可证:沪网文[6号 | 信息网络传播视听节目许可证:0910417 | 互联网ICP备案:沪ICP备号-3 沪ICP证:沪B2- | 违法不良信息举报邮箱: | 违法不良信息举报电话:转3只需一步,快速开始
Unity中文基础教程Unity3D基本手册高级手册(精)Unity3D从入门到精通 中文视频教程unity3d成套动作的MMUnity3D植物大战僵尸游戏脚本源码及素材Unity3D 游戏开发宣雨松著人民邮电出版社unity3d基础教程教程 很适合新手呀分享另外一本Unity3D中文PDF书籍,Unity游戏Unity3D投篮游戏精品教程系列植物素材
75113631233880361086910472581222613771116
378462823218540178091345116080116791965413335114351247915060108811384010451118451056110106
今日: 225|昨日: 1368|帖子: 310604|会员: 75445|欢迎新会员:
滚动消息:
最新图片最新相册
精华主题最新主题热门主题最新日志最新活动
1&&版块名称:资源分享 Asset主题分类名称:插件总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:74总浏览数:2133热度值:30推荐数:12&&版块名称:资源分享 Asset主题分类名称:源码总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:69总浏览数:1867热度值:20推荐数:03&&&版块名称:教程分享 Tutorial主题分类名称:基础教程总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:7531总浏览数:66714热度值:7318推荐数:324&&版块名称:资源分享 Asset主题分类名称:粒子系统总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:973总浏览数:11846热度值:989推荐数:05&&版块名称:资源分享 Asset主题分类名称:源码总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:28总浏览数:1414热度值:15推荐数:06&&版块名称:资源分享 Asset主题分类名称:模型总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:1478总浏览数:16085热度值:1459推荐数:47&&版块名称:教程分享 Tutorial主题分类名称:特效教程总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:40总浏览数:1763热度值:12推荐数:08&&版块名称:教程分享 Tutorial主题分类名称:实例开发教程总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:30总浏览数:1712热度值:7推荐数:09&&版块名称:资源分享 Asset主题分类名称:材质贴图总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:26总浏览数:858热度值:16推荐数:010&&版块名称:教程分享 Tutorial主题分类名称:实例开发教程总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:55总浏览数:2724热度值:13推荐数:01版块名称:技术讨论 Technology Answers主题分类名称:常见问题总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:5总浏览数:75热度值:0推荐数:02版块名称:技术讨论 Technology Answers主题分类名称:常见问题总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:0总浏览数:36热度值:0推荐数:03版块名称:技术讨论 Technology Answers主题分类名称:常见问题总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:0总浏览数:31热度值:0推荐数:04版块名称:技术讨论 Technology Answers主题分类名称:脚本总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:1总浏览数:38热度值:1推荐数:05版块名称:技术讨论 Technology Answers主题分类名称:随便问问总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:5总浏览数:80热度值:0推荐数:06版块名称:推荐文章 News主题分类名称:精华文章总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:0总浏览数:36热度值:0推荐数:07版块名称:技术讨论 Technology Answers主题分类名称:常见问题总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:5总浏览数:108热度值:0推荐数:08版块名称:技术讨论 Technology Answers主题分类名称:手机总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:1总浏览数:58热度值:1推荐数:09&版块名称:推荐文章 News主题分类名称:精华文章总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:3总浏览数:116热度值:1推荐数:010&版块名称:资源分享 Asset主题分类名称:模型总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:4总浏览数:169热度值:4推荐数:01&&版块名称:教程分享 Tutorial主题分类名称:基础教程总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:8292总浏览数:71245热度值:8114推荐数:182&&&版块名称:教程分享 Tutorial主题分类名称:基础教程总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:7531总浏览数:66714热度值:7318推荐数:323&版块名称:教程分享 Tutorial主题分类名称:基础教程总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:6615总浏览数:60112热度值:6459推荐数:124&版块名称:资源分享 Asset主题分类名称:模型总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:3946总浏览数:37858热度值:3862推荐数:255&版块名称:资源分享 Asset主题分类名称:源码总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:2887总浏览数:28242热度值:2826推荐数:106&版块名称:资源分享 Asset主题分类名称:其他总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:1962总浏览数:18542热度值:1923推荐数:07&版块名称:教程分享 Tutorial主题分类名称:基础教程总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:1944总浏览数:22743热度值:1907推荐数:68&版块名称:资源分享 Asset主题分类名称:其他总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:1841总浏览数:17816热度值:1816推荐数:49&&版块名称:教程分享 Tutorial主题分类名称:实例开发教程总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:1649总浏览数:15547热度值:1616推荐数:010&版块名称:资源分享 Asset主题分类名称:模型总发帖数:0今日发帖数:0最后回复时间:发帖时间:回复数:1556总浏览数:13455热度值:1542推荐数:41&评论数:0浏览数:448路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:02&评论数:0浏览数:465路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:03评论数:0浏览数:438路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:04&评论数:0浏览数:496路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:05评论数:0浏览数:526路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:06&评论数:0浏览数:499路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:07&评论数:0浏览数:555路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:08&评论数:0浏览数:588路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:09&评论数:0浏览数:590路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:010评论数:0浏览数:703路过数:0鸡蛋数:0鲜花数:0握手数:0雷人数:01&活动时间: 19:34报名截止时间:N/A每人花销:0活动地点:Unity3D联盟活动类型:活动性别要求:0需要人数:0已报名人数:02&活动时间: 19:13报名截止时间:N/A每人花销:0活动地点:Unity3D联盟活动类型:站内活动性别要求:0需要人数:0已报名人数:03&活动时间: 22:31 -
22:31报名截止时间: 22:31每人花销:0活动地点:Unity联盟活动类型:奖励性别要求:0需要人数:0已报名人数:244活动时间: 09:45 -
17:45报名截止时间:N/A每人花销:0活动地点:北京服装学院(芍药居)活动类型:聚会性别要求:0需要人数:10已报名人数:15&活动时间: 01:25 -
17:37报名截止时间:N/A每人花销:0活动地点:Unity联盟活动类型:奖励活动性别要求:0需要人数:0已报名人数:1176&活动时间: 03:06报名截止时间:N/A每人花销:0活动地点:Unity联盟活动类型:奖励性别要求:0需要人数:0已报名人数:227&活动时间: 18:00 -
06:00报名截止时间:N/A每人花销:0活动地点:Unity联盟活动类型:送金币活动性别要求:0需要人数:0已报名人数:8608&活动时间: 02:15 -
22:22报名截止时间:N/A每人花销:0活动地点:Unity联盟活动类型:团购性别要求:0需要人数:0已报名人数:17
活跃会员人气版块
161152143134125116117108109910301版块帖子数:17267版块话题数:426版块今日新帖数:30版块介绍:3D游戏引擎业内资讯
<a href="/forum.php?mod=forumdi302版块帖子数:108607版块话题数:1091版块今日新帖数:30版块介绍:3D游戏引擎开发资源库,精品资源需要你我共享!
<a href="http://www.u3dchina.c253版块帖子数:30016版块话题数:808版块今日新帖数:25版块介绍:Unity人才招聘外包区
<a href="/forum.php?mod=forumd204版块帖子数:35816版块话题数:985版块今日新帖数:20版块介绍:Unity3D一般问题讨论区
<a href="/forum.php?mod=foru155版块帖子数:8540版块话题数:209版块今日新帖数:15版块介绍:赶走烦恼带来欢笑一起分享彼此的快乐
<a href="/forum106版块帖子数:6227版块话题数:154版块今日新帖数:10版块介绍:←插件讨论区
<a href="/forum.php?mod=forumdisplay107版块帖子数:59639版块话题数:413版块今日新帖数:10版块介绍:3D游戏引擎教程分享区
<a href="/forum.php?mod=forum108版块帖子数:18824版块话题数:430版块今日新帖数:10版块介绍:3D游戏引擎常用代码
<a href="/forum.php?mod=forumdi59版块帖子数:5753版块话题数:125版块今日新帖数:5版块介绍:项目展示有利于提高个人或公司声誉
<a href="/forum.p510版块帖子数:1384版块话题数:40版块今日新帖数:5版块介绍:版主讨论区
说明:版主的建议及讨论内容区
新注册会员主题排行帖子排行精华排行在线时间排行空间访问排行积分排行
3D游戏引擎教程分享区
3D游戏引擎开发资源库,精品资源需要你我共享!
3D游戏引擎业内资讯
3D游戏引擎常用代码
Unity3D一般问题讨论区
←插件讨论区
Unity人才招聘外包区
项目展示有利于提高个人或公司声誉
赶走烦恼带来欢笑一起分享彼此的快乐
会员可在此版块申请版主、申请精华等
点击随机调到资源区或教程区!你所在的位置: >
Unity3D小游戏大全
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
【Unity3D小游戏专题】
专题介绍:7399小游戏为您提供最新最全【Unity3D】小游戏在线免费玩,还有各类Unity3D小游戏下载,最新的Unity3D小游戏排行榜,更多好玩的小游戏尽在7399游戏大全!
人气:190657人气:132420人气:131258人气:102749人气:90049人气:88591人气:81772人气:60294人气:47352人气:46284人气:36241人气:34264人气:31106人气:25541人气:25485人气:24494人气:23143人气:22660人气:22183人气:21813人气:21022人气:20500人气:20156人气:20070人气:19077人气:18281人气:18174人气:16774人气:16756人气:15736人气:12805人气:12072人气:11868人气:11831人气:11546人气:10205人气:10037人气:10006人气:9949人气:9565人气:9534人气:9068人气:8141人气:7883人气:7757人气:7587人气:7466人气:7018人气:6739人气:6565人气:5870人气:5742人气:5610人气:5489人气:5165人气:5103
第 1 页第 2 页第 3 页第 4 页第 5 页第 6 页第 7 页

我要回帖

更多关于 unity3d小游戏 的文章

 

随机推荐