30
2017
03

Unity3d在Window上使用SAPI进行语音识别

前言

在之前《Unity利用Sapi进行windows语音开发》中,本计划不准备继续做语音识别。因为在unity3d中已经提供了语音识别的相关方法,详见unity3d的官方文档:https://docs.unity3d.com/ScriptReference/Windows.Speech.KeywordRecognizer.html。但是有一点是这个支持win10。对于win7用户来说,如果不使用百度语音或者科大讯飞语音的话,那么使用SAPI就是最好的方式了。同样的,由于Unity中无法直接使用SAPI,所以只能按照原来的思路,把它写到一个exe工具中,然后再由unity3d来调用。

More...

04
2016
09

Unity无缝循环世界实现

一年前曾经碰到过已无限世界为题材的游戏开发比赛,虽然对比赛没有兴趣,但是对这个题材倒是有点想法。如何通过unity3d实现无缝的循环世界呢。

有一种想法是动态生成,一块场景一块场景进行动态加载。(做过2D背景地图加载的可能理解,不展开)

如果是单场景,有没有简单的办法呢?思来想去,总算找到一种办法,4个相机图像叠加法

image

More...

21
2016
08

Unity传送门类似效果实现

简述

在传送门中,核心的玩法是在地上或者墙上打开2个可以联通的洞来实现传送的效果。以此扩展加入解谜要素构成游戏的核心。

这里尝试使用unity来实现传送门的核心功能,具体功能分析如下:

1、传送门的模型

2、传送门的贴图

3、传送门的传送功能

这里我们需要以下软件:3dmax 2014,unity3d 5.4.0,visual studio 2015

一、传送门的模型和uv

打开3dmax,确认系统单位和显示单位都为米,如果不为米,改成米

More...

18
2016
08

Unity3D运行时读取外部MP3文件

在PC端VR游戏开发中,需要动态加载本地的MP3文件,但是Unity3D不知道出于什么原因,到5.4.0也不支持MP3文件的外部加载(目前只支持wav和ogg)。

因此要想通过www来加载mp3文件就只能采用曲线救国的方式,将MP3文件读取后转为wav或者ogg,然后再给AudioSource来播放

由于只是在PC端进行开发,故这里采用NAudio.dll这个类库。使用NAudio需要将项目Unity3D工程的API版本改成.net 2.0(默认是.net 2.0 sub,在PlayerSetting->OtherSettings的Api Compatibility Level)。将NAudio.dll放置在项目的Plugins文件夹下。

More...

23
2016
06

unity3d屏蔽Windows10输入法

在win10上,如果安装了某些输入法(比如QQ输入法),会造成unity的键盘事件被输入法捕获而不能触发的情况。只有将输入法切换到英文状态下才能响应键盘事件。

解决办法有,

1:用户主动切换输入法,甚至卸载输入法

2:程序在非输入状态下,屏蔽输入法

由于方法1在全屏状态下,用户完全不知道是否在输入法劫持中,常常导致以为是程序的bug,所以这里采用方法2

在unity中,官方并没有提供一个很好的解决方案(Input.imeCompositionMode无效)。所以只能借助win api。

More...

04
2016
06

unity3d 中文乱码解决方法:cs代码文件格式批量转化UTF8

在Unity3d中经常会碰到中文乱码的问题,比如代码中的[AddComponentMenu("GameDef/AI/战机AI")],注释,中文文本等等

其原因在于,unity本身是不顾及地区的,所以默认全部为unicode编码,造成中文乱码

解决方法很多,比如,

  • 一个一个文件用文本工具转成utf8格式

  • 修改unity3d文件模板

第一种方法,在数量少的时候可行,数量多的时候就比较耗时和重复

More...

24
2016
05

Unity SteamVR插件集成

重要组件

SteamVR_Camera

VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面

使用方法:

l 在任一个摄像机上增加脚本

l 点击Expand按钮

image001image002

More...

23
2016
05

Unity3D Layer要点

简介

Layer可以用于光照的分层和物理碰撞的分层,这样可以很好地进行性能优化

数据结构

Layer在Unity中有3中呈现方式:1、string名字,2、int层索引,3、LayerMask数据

一般地,在编辑器中,我们设置GameObject的Layer,是直接使用的层的名字,比如Default、UI等等。

More...

21
2016
04

Unity利用Sapi进行语音开发

软件中的语音技术主要包含两种:语音识别speech recognition和语音合成speech synthesis。一般地,开发者会因为技术实力和资金实力等各方面的问题无力完成专业的语音引擎,因此通常选择现有的较为专业的语音引擎来完成相关的开发,比如国内非常出名的科大讯飞,百度语音等等。当然国外的还有Google语音,微软有SAPI等等。

在VR开发过程中,由于运行在Windows环境下,那么自然而然,我们首选SAPI来进行语音开发。一是和Windows原生,二是离线不需要网络,三是不需要任何插件。另外就是SAPI发音,尤其是英文发音,还是相对来说质量不错的。(Win7以上自带)

More...

07
2015
12

Unity3D打包APK,无法打进Jar的解决办法

最近同事遇到一个问题,无论在接腾讯的MSDK还是韩国的SK渠道的SDK,其中的某个Jar的代码在打包时永远不会出现的APK中。这样导致在运行使用相关代码时造成APP闪退(Crash),日志中可以看到相关Class not Found的错误。

如果出现这样的问题,可以按照以下方法解决

1、建立空包测试

创建了一个空的U3D工程,将那个Jar文件a.jar放在Assets/Plugins/Android/libs/下,同时将一个可以正常打包的Jar文件b.jar也放在该位置。打包。按照检测方法查看是否有a.jar和b.jar中的相关代码

More...