前言:
本工程使用的版本为5.3.2f1(64bit)
本工程使用的Vuforia版本为vuforia-unity-5-5-9.unitypackage,下载地址https://developer.vuforia.com
我以前都用4.x的Unity3D和3.x.x的Vuforia版本,因为稳定性高且省的各种验证和API不兼容,不过高版本毕竟是大势所趋,所以这里用高版本。本文的最大意义在于异常处理,在实践中你能发现本文的重要性。(关于异常处理集中在下篇讲,因为博主积分不够,每一篇博文能粘贴的图片有限,敬请谅解)。废话不多说,开始动手。
1、首先打开Unity3D,并新建一个工程,怎么建工程就不用多说了吧,以下是空白工程:
空工程
2、导入我们所需要的Vuforia插件包。
注意:插件的路径一定是英文路径,不能包含中文或特殊字符,否则很可能导入失败。把vuforia-unity-5-5-9.unitypackage拖动到Unity3D的Asset中,稍等会弹出包里面的内容:
导入Vuforia

3、打开/Asset/Vuforia/Prefabs文件夹,会出现:

这些都是Vuforia插件的预制件,使用这些预制件我们就能做出AR的最基本的东西了。
4、我们把Hierarchy里面的MainCamera删除,然后把预制件ARCamera拖到场景中去:

在Hierarchy中选中ARCamera,查看Inspector视窗:
选中ARCamera

在这里填写APP Key,也就是Vuforia官网上登录自己账号,Develop栏目下Lisence Manager里面你之前建立的APP Key(Vuforia4之前的插件版本不需要这个,这也是我之前喜欢用低版本插件的原因),如果没有APP Key就新建一个。然后把下面复制了,粘贴到Unity里面。

粘贴后如下,当然还有一些参数设置根据自己需求改,我是如下设置的:

5、把预制件的ImageTarget拖动到场景之中

这时候,选中Hierarchy中的ImageTarget,查看Inspector视窗,会看到ImageTargetBehavior下有个“No target defines.... ”,猛戳它,然后跳进Vuforia官网,登陆后,进入Develop栏目下的Target Manager,如果你之前在这里建过Target好办,选择你需要的下载下来,没有建立过的自己琢磨一下建一个。

选中你所需要的target Name,并点击下载

选择平台为Unity Editor并点击下载

然后就会弹出下载提示框,将文件保存到你所需要的位置。为了方便我保存在桌面。(路径必须是全英文路径)
6、像导入Vuforia一样,将刚刚下载的unitypackage文件导入Unity的Asset,如下图,依旧默认全选,点击Import导入。

7、导入完成后这时候再在hierarchy中选中ImageTarget,查看Inspector如下:

这时在ImageTargetBehavior中会出现DateBase和ImageTarget选项。先选择dateBase,这里出现的就是你刚刚导入的包;再选择ImageTarget,里面是刚刚导入的包里面包含的目标图片,选择一个你需要的,这时候你的Scene就会变成这样:

场景里的这张图片就是你所选择的Target图片。
8、这时候我们再Hierarchy中新建一个物体,为了方便演示我用球代替。

9、我们把刚建的模型拖动为ImageTarget的子物体
拖动为子物体
这样最简单的AR demo就完成了
10、演示效果:点击运行按钮开始运行

异常处理:
异常处理是本篇的重点,因为很多刚刚从事相关开发的开发者凭着摸索或者参照其他材料,以上内容也很容易完成。但实际中可能会遇到一些因缺少经验而难以解决的问题,所以,前面的种种都是为了我接下来讲异常处理做的铺垫。
正文:
1、在Editor中运行调试程序,如果出现“Screen is to small to display authorization dialog. Authorization denied”这个bug导致演示失败,是因为Game视窗太小导致的,直接调整Game视窗大小即可。

2、如果ARCamera的WebCamBehavior.cs脚本出现“An error occured while trying to enable Vuforia Play Mode”,以及当你使用的摄像头不是主流摄像头时出现的“Webcam profiles ensure that Play Mode performs well with your webcam. You can create a custom profile for your camera by editing .... profiles.xml”.截图如下:

对于前一个问题:这种问题是由于Unity版本问题而引起的,如果你使用Unity4.x就不会出现这个问题。这种情况该怎么办呢,继续看:

按上图打开Project下文件目录,你会惊奇的发现WebcamProfiles文件夹及其中的文件都在/Asset/Vuforia/Editor/之下,这就好办了,按上图方式拖动就行了。拖动完成是这样的

对于第二个问题:
打开该文件夹下的profiles.xml文件,如果发现没有我们当前想用的摄像头,就按照原有的格式添加一个 ......就行了。

3、如果你遇到下面这个问题:“Failed to load 'Assets/Plugins/VuforiaWrapper.dll',expected 64 bit architecture ... But was IMAGE_FILE_MACHINE_I386 . You must recompile your plugins for 64 bit architecture”

这是由于Vuforia的库不匹配引起的,希望以后Vuforia能修复这个问题,我们该怎么办呢?
别急,查看Project文件目录如下:

在/Plugins/文件夹下新建文件夹,命名“x86”。并把上面红框里("/Assets/Plugins/")四个文件拖动到该新建的文件夹下。如图:

4、如果在导出应用时遇到“Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. ”问题,这是Unity3D 5.x的问题

解决办法是打开Unity Service的广告或者In-APP purchase。

按下这朵云的图标即可进入Unity Services,然后你可以打开 Ads,In-APP purchase等等,问题就能解决了。
P.S.关于Unity3D加Vuforia的AR简单小游戏开发的最基础的介绍以及相关异常处理就到这里,当然要想做的更好你需要足够的耐心,一定的编程能力,充分的面向对象思维,以及一个好的美工