回顾我开发Oberstein AR的坎坷路,明明只是一个最简单的AR小程序,却遇到了这么多bug……于是决定把它们记录下来,以免日后再掉进同样的坑。
1. MMD模型导入Unity后跳舞动作失调
原因:我使用了错误的MMD模型(汗)。奥大的模型我做过两版,一大一小,这次错把小模型套上了大模型的舞蹈动作。
解决方法:换成正确的模型。
2. 在XR Settings里找不到Vuforia Augmented Reality Support选项
原因:2017.2版Unity以及之后的版本已将Vuforia引擎整合进去,无需再进行勾选,因此XR Settings里去掉了该选项。(见https://library.vuforia.com/articles/Training/getting-started-with-vuforia-in-unity.html)
解决方法:跳过此步。
3. 找不到Vuforia引擎
原因:虽然Unity整合了Vuforia引擎,但是还需要导入一下。(见https://library.vuforia.com/articles/Training/getting-started-with-vuforia-in-unity.html)
解决方法:Window-Package Manager-安装Vuforia Engine AR
4. 在Unity里测试时屏幕黑乎乎一片,看不到模型
原因:Unity测试AR效果时会调用电脑摄像头,而我把摄像头挡上了。
解决方法:把摄像头打开。
5. 打包失败,提示缺少NDK、OpenJDK和SDK三个安卓开发模块
原因:我下载2019.3.8版Unity时,只在安卓平台前面打了勾,没有在其展开项下打勾,导致上述三个模块没有安装。而我当时没有通过Unity Hub安装Unity,所以也无法通过Unity Hub补装三个模块。
解决方法:分别从安卓开发相关官网下载上述模块并安装,或者重新从Unity Hub安装最新版Unity并选中所有需要的模块。我选择了后一种方法。
6. 打包仍然失败,仍然提示缺少三个安卓开发模块。
原因:Unity仍然从之前的Editor文件夹中寻找模块安装路径,但现在我电脑里有两版Unity,模块在新版Unity的安装路径下。
解决方法:路径修改失败,我把三个模块的文件夹拷到原路径下,问题解决。
7. 打包后程序图标不显示
原因:似乎是与Target API Level有关。Adaptive图标需要API Level至少为26,Round图标需要API Level至少为25。
解决方法:前景背景图像都要选择好,同时调整Target API Level。(我先是都调整为28,后来说我没安装这个level,就又改回安装的最高level,图标显示就正常了。)
8. 测试时摄像头模糊,不对焦
原因:似乎是Vuforia摄像头本身的问题。
解决方法:下了个自动连续对焦的脚本,挂到摄像机上。
9. 音画不同步
原因:模型识别到图片才开始显示,但音乐会自动播放,从而产生时差。
解决方法:下了个音画同步脚本,覆盖Default Trackable Event Handler脚本。
10. 挂上音画同步脚本以后报错
原因:忘记把模型和音乐拖进脚本的对象框。
解决方法:把它们拖进去。
11. 音乐还是刚一启动程序就开始播放
原因:忘记去掉“Play On Awake”前面的勾,导致程序启动后音乐自动播放。
解决方法:去掉“Play On Awake”前面的勾。
12. 在大部分安卓手机上测试时不显示模型
原因:使用MMD插件将MMD模型导入Unity时,默认使用了MMD的贴图着色器,但这种格式可能不为大多数手机识别。
解决方法:安装Unity标准资源包中的Toon着色器,将贴图着色器改为Toon-Basic。
13. 模型不动
原因:仍然和MMD插件有关。
解决方法:删去MMD4Mecanim文件夹下除Plugins、Shaders和Textures以外的所有文件夹。