我是学习Unity的一名初级程序员。如果,一下文章整理的不对。还请见谅。
首先,我们先了解一下AR的数据集(DataSet)。
1.
在我们使用Vuforia的AR sdk来开发项目的时候。会先去官网上传并下载需要识别的图片的一些信息。把下载的unitypackage文件导入你的Unity项目中后,会得到以下两个文件夹:里面的具体内容如下图显示:
如图所示:Editor中存储的重要就是你要去识别的文件。而StreamingAssets文件夹中储存的就是这些图片的识别信息(在后缀为.dat中),以及配置信息(在后缀为.xml中)
。而我们说的数据集主要就是StreamingAssets文件夹里面的文件了。
2.
现在我们就开始用代码告诉大家怎么在SD卡中加载数据集了。
代码如下:
using UnityEngine; using Vuforia; using System.Collections; using System.Collections.Generic; public class SDCardDataSetLoader : MonoBehaviour //如何从SD卡中加载数据集 { private bool mLoaded = false; //是否加载 private DataSet mDataset = null; //要加载的数据 // Update is called once per frame void Update() { if (VuforiaRuntimeUtilities.IsVuforiaEnabled() && !mLoaded) //VuforiaRuntimeUtilities高通运行的一个API接口的使用。里面的IsVuforiaEnabled来判断场景是否启用 { string externalPath = "/mnt/sdcard/tarmac.xml"; //设置文档路径(tarmac.xml这个文件是针对你项目中的XML文档) if (mDataset == null) { ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>(); //首先,创建一个数据集。(即得到当前跟踪对象的引用) mDataset = tracker.CreateDataSet(); //给此对象创建一个数据集 } if (mDataset.Load(externalPath, VuforiaUnity.StorageType.STORAGE_ABSOLUTE)) //然后,给数据集中添加数据。 //参数一: 数据目录 //参数二: 存储类型,(绝对存储,以防丢失) //返回值为 : bool(代表是否加载成功) { mLoaded = true; // 加载成功 } else { Debug.LogError("Failed to load dataset!"); //否则报错 } } } } 3.再说一些题外话,项目中的StreamingAssets文件夹是Unity中的特殊文件夹。我在AssetBundle在安卓中的解析的教程中有提及过。有兴趣的可以查看。
4,谢谢查看喽。