今天想谈谈android 与 unity 的那点事儿==那些我踩过的坑。
[1] 问题一
问题描述:
android 与 unity 的交互过程,android 负责下载 unity 的资源,unity 负责调用资源呈现 AR 效果。android 下载了资源,但是 unity 并没有成功调用资源文件,Log 显示 unity 把 android 下载的资源都读取了,但是没有显示调用资源文件的 Log 。
问题追溯:
只打印了读取资源文件的 Log , 没有打印出调用资源文件的 Log ,问题出在调用资源文件的代码段。经过对比 android 与 unity 两边的日志,发现 unity 执行调用资源文件前有一个判断,资源文件必须要读取到9个,才跳出读取资源文件的循环,执行调用资源文件,而 android 客户端由于用户没有全部选择,只选择了 7 个,故只下载了 7 个资源文件,导致 unity 没有执行调用资源文件的代码段。
解决方案:
(1)android 模块设置 9 个默认选项,用户选择了的替代掉默认选项,若全没有选则下载默认 AR 场景。
(2)unity 模块去掉对资源文件数量的判断,资源文件有多少个就读取多少个,显示多少。
方案评估:
方案一 保证了 AR 场景的完整性,占内存多,时间耗用量大,用户的选择性减弱。
方案二 用户体验更切合真实,无法保证 AR 场景的完整性。
问题教训:
这个问题花的时间代价是有点大的。细节决定成败,不是鸡汤,而是追根溯源中很必要的一个点。因为在 android 与 unity 交互的过程中,我们只抓住了大的方面,例如调用 unity 的方法、传递的参数、文件存放路径等;但却栽在了文件数目这样一个问题上。
android 方面理所当然的认为用户选择什么 AR 效果就下载什么资源,而 unity 方面考虑的却是如果不够数目的资源文件呈现的 AR 场景会不完整。
[2] 问题二
问题描述:
unity 呈现 AR 场景不稳定,抖动问题。
问题追溯:
unity 调用摄像机,识别参照物,呈现 AR 场景。问题出在哪?小菜鸟没经验就只好一步步比对。摄像机问题?找了十几台不同型号的手机拿来测试,问题一样存在。参照物?识别图片从简单图案到复杂图案十几张测试,发现识别图越复杂越稳定。另外与识别图的摆放的位置也有关系,平面的会比凸面的更容易识别。
解决方案:
修改识别图,改变识别图的位置。
方案评估:
识别图是项目的主题,项目要求不能更改,只能增加修饰元素,识别图的位置由凸面改成平面。
问题教训:
小白上路问题多,内心坚强,换位思考。